HBase在Ubuntu上的故障排查指南
java -version确认安装正确(输出需包含1.8.x或更高版本)。若未安装,使用sudo apt install openjdk-8-jdk安装。hbase.rootdir(hbase-site.xml中)指向正确的HDFS路径(如hdfs://localhost:9000/hbase)。使用jps命令查看HBase核心进程是否运行:
HMaster(主节点)和至少一个HRegionServer(Region服务器)。./bin/start-hbase.sh(位于HBase的bin目录);若启动失败,需强制终止残留进程(kill -9 <PID>),再重新启动。HBase的关键日志位于logs目录(默认路径为/usr/local/hbase/logs/),重点查看:
hbase-*-master-*.log):记录RegionServer注册、表操作等核心事件,若启动失败,此处会有详细错误(如端口冲突、ZooKeeper连接失败)。hbase-*-regionserver-*.log):记录数据读写、Region分裂等操作,若出现RegionTooBig或CompactionError,需调整对应配置(如hbase.hregion.max.filesize)。ServerNotRunningYetException或HDFS is in safe mode。bin目录,执行hdfs dfsadmin -safemode leave强制退出安全模式,再重启HBase。ClassCastException或NoSuchMethodError(常见于slf4j等日志库冲突)。lib目录下的slf4j-log4j12-*.jar移至其他目录(如/tmp),并在hbase-env.sh中添加export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true,避免HBase加载Hadoop的jar包。hbase.rootdir未指向有效路径、hbase.cluster.distributed未设为true(单机模式需设为false,但生产环境推荐分布式)。conf/hbase-site.xml,确保配置正确:<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value> <!-- 替换为实际HDFS地址 -->
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value> <!-- 分布式模式 -->
</property>
KeeperException$ConnectionLossException。hbase-site.xml中的hbase.zookeeper.quorum设置为正确的ZooKeeper地址(如localhost);若使用外部ZooKeeper,需确保其已启动(zkServer.sh status)。http://<master-hostname>:60010,可查看RegionServer列表、表分布、Region状态(如是否有热点Region)。http://<region-server-hostname>:60010,可查看RegionServer的请求处理数、存储使用率、Region分裂情况。./bin/hbase shell进入shell后,执行status 'simple'(显示RegionServer数量和Region分布)。WALs(Write-Ahead Log)目录非空导致的启动失败,执行hdfs dfs -rm -r /hbase/WALs/*清理日志,再重启HBase。