HBase Shell启动后无法正常使用,JettyAdminServer加载失败求助
HBase Shell无法正常使用的解决方案(针对ServerNotRunningYetException及Jetty类缺失问题)
核心问题定位
你遇到的org.apache.hadoop.hbase.ipc.ServerNotRunningYetException本质是:虽然jps显示HMaster进程存在,但实际因Jetty依赖缺失,HMaster未完成初始化,导致HBase集群未真正就绪;ZooKeeper日志中的java.lang.NoClassDefFoundError: org/eclipse/jetty/server/Connector直接证实了Jetty核心类未被加载。
可行解决方案
1. 补全Jetty依赖包
- 检查HBase安装目录下的
$HBASE_HOME/lib文件夹,确认是否存在jetty-server-*.jar、jetty-util-*.jar、jetty-io-*.jar等核心Jetty依赖。 - 若缺失,从对应版本的HBase官方安装包中提取完整的Jetty依赖jar包,复制到
$HBASE_HOME/lib目录;或下载与HBase版本兼容的Jetty包(HBase 2.x通常对应Jetty 9.x系列)。
2. 配置HBase类路径
- 编辑
$HBASE_HOME/conf/hbase-env.sh文件,添加以下配置确保HBase能加载Jetty依赖:export HBASE_CLASSPATH=$HBASE_CLASSPATH:$HBASE_HOME/lib/* - 若Hadoop的
lib目录存在同类型Jetty包,为避免版本冲突,建议将Hadoop中冲突的Jetty jar包临时重命名(如添加.bak后缀),优先使用HBase自带的Jetty版本。
3. 重启相关服务
- 停止HBase服务:
stop-hbase.sh - 用
jps检查并终止所有残留的HBase进程(如HMaster、HRegionServer):kill -9 <进程ID> - 重启ZooKeeper(若为HBase自带ZooKeeper):
$HBASE_HOME/bin/hbase zkServer restart - 重新启动HBase:
start-hbase.sh
4. 验证修复效果
- 启动HBase Shell,执行
status命令,若返回集群状态信息则说明问题解决; - 查看ZooKeeper日志(路径通常为
$HBASE_HOME/logs/zookeeper-*.log),确认无Jetty加载错误; - 访问HBase Web UI(默认端口16010),检查HMaster是否正常运行。
内容的提问来源于stack exchange,提问作者Xuan Chen
相关产品推荐
相关产品推荐

