Debian系统HBase故障排查方法分类整理
使用jps命令查看HMaster、HRegionServer进程是否存在。若进程未启动,尝试手动启动服务({HBASE_HOME}/bin/start-hbase.sh),并再次确认进程是否启动。
HBase日志默认位于${HBASE_HOME}/logs/目录下(如hbase-user-master-hostname.log、hbase-user-regionserver-hostname.log)。重点关注以下关键词:
Could not bind to address(端口被占用);Unable to create ZooKeeper connection(ZK未启动或配置错误);No valid filesystem found(HDFS NameNode未运行或目录权限错误);OutOfMemoryError(JVM堆内存不足)。jps检查QuorumPeerMain进程是否存在;使用zkCli.sh -server zk_host:2181 ls /hbase确认/hbase节点是否正常(ZK是HBase元数据管理核心)。jps检查NameNode、DataNode进程;使用hdfs dfs -ls /hbase确认HBase数据目录权限(需为hbase:hadoop)。重点核查${HBASE_HOME}/conf/hbase-site.xml中的关键配置:
hbase.zookeeper.quorum:ZooKeeper集群地址(需与实际一致);hbase.rootdir:HDFS数据目录(如hdfs://namenode:8020/hbase);hbase.master.port、hbase.regionserver.port):避免与系统中其他服务冲突。hbase-env.sh中的JVM堆内存参数(如export HBASE_REGIONSERVER_OPTS="-Xms8G -Xmx8G"),避免设置过大导致物理内存耗尽;df -h检查HDFS及本地磁盘剩余空间(需预留20%以上空间,避免WAL日志无法写入)。ABORTING region server或long garbage collecting pause(Full GC过长)。-Xmx/-Xms,如从4G调整为8G);-XX:+UseG1GC,减少Full GC次数);iostat -x 1查看负载,若过高需更换SSD)。hbase hbck命令报Region not deployed(Region未分配到RegionServer)或Region should not be deployed(Region重复分配)。hbase hbck -fixMeta;hbase hbck -fixAssignments;disable 'table_name')、删除ZooKeeper中/hbase节点(zkCli.sh rmr /hbase),并清理HDFS表目录(hdfs dfs -rm -r /hbase/data/default/table_name),最后重启HBase。ServerNotRunningYetException(服务未启动)或RegionTooBusyException(Region繁忙)。status 'detailed');hbase hbck -details 'table_name'),若Region未分配需手动分配(assign 'region_id');hdfs dfsadmin -report)及WAL日志(hbase hbck -fixHdfsOrphans修复损坏的WAL);hbase.regionserver.handler.count提升并发处理能力,调整hbase.hregion.memstore.flush.size控制MemStore刷写阈值)。split 'region_name')。-XX:+UseG1GC -XX:MaxGCPauseMillis=100),增大堆内存。major_compact 'table_name'),或通过HAR工具归档小文件(hadoop archive -archiveName myhar.har -p /hbase/data/table /archive)。MD5(rowkey))或反转时间戳(如Long.MAX_VALUE - timestamp)优化RowKey。hbase hbck是HBase自带的集群一致性检查与修复工具,常用命令:
hbase hbck(输出Status: OK表示集群一致);hbase hbck -fixMeta(修复Region元数据与HDFS数据不一致);hbase hbck -fixAssignments(将未分配的Region分配到RegionServer);hbase hbck -fixHdfsHoles(修复Region链断裂问题,如.regioninfo文件丢失)。