HBase故障排查指南(CentOS环境)
明确故障的具体表现是排查的基础,常见现象包括:HBase服务不可用(无法连接)、读写延迟升高、Region无法上线、启动失败、连接ZooKeeper报错(如“KeeperErrorCode: ConnectionLoss”)等。
日志是故障诊断的核心依据,CentOS下HBase日志默认路径为/var/log/hbase/
(如hbase-hadoop-*.log
、hbase-regionserver-*.log
)。重点查看ERROR和WARN级别的日志,从中定位具体错误信息(如端口冲突、ZooKeeper连接失败、数据文件损坏等)。
通过HBase Shell执行以下命令快速诊断集群状态:
status 'detailed'
:查看集群详细状态(包括Master、RegionServer是否存活,Region分布是否均衡);scan 'hbase:meta'
:检查元数据表(若Region无法上线,可通过此命令查看元数据是否异常);hbck
:检查集群一致性(如Region未分配、数据目录损坏等问题),并可使用hbck -fixAssignments
修复分配问题。检查HBase关键配置文件(hbase-site.xml
、core-site.xml
、hdfs-site.xml
)的参数设置:
hbase.rootdir
:需指向正确的HDFS路径(如hdfs://namenode:9000/hbase
);hbase.zookeeper.quorum
:需列出所有ZooKeeper节点地址(如node1,node2,node3
);hbase.cluster.distributed
:分布式模式下需设置为true
;hbase.master.port
(默认60000)、hbase.regionserver.port
(默认16020)等端口未被占用。使用以下命令监控系统资源使用情况:
top
/htop
:查看CPU、内存占用(HBase是内存密集型应用,需确保足够内存分配);df -h
:检查磁盘空间(HBase数据目录需预留足够空间,避免因磁盘满导致写入失败);free -m
:查看内存使用(确保系统有足够空闲内存,避免OOM);du -sh /path/to/hbase/data
:查看HBase数据目录大小(判断数据增长是否异常)。ping
命令测试HBase节点间(如Master与RegionServer)的网络连通性,使用telnet
或nc
测试端口是否可达(如telnet node1 60000
);zkCli.sh
连接ZooKeeper(./zkCli.sh -server localhost:2181
),执行ls /hbase
查看HBase节点是否存在,执行ruok
检查ZooKeeper服务是否正常(返回“imok”表示正常)。hbase.master.executor.serverops.threads
提升并行初始化能力,增加hbase.master.initializationmonitor.timeout
延长超时时间);停止占用端口的进程(kill -9 <PID>
);启动ZooKeeper服务(systemctl start zookeeper
)。scan 'hbase:meta'
,删除对应Region的元数据记录(需谨慎操作),重启HBase;修复或删除损坏的Region目录(位于HDFS的/hbase/data/default/<table_name>
路径下)。hbase.zookeeper.quorum
配置错误、网络不通;hbase-site.xml
中的hbase.zookeeper.quorum
配置;修复网络问题(如防火墙拦截,需开放ZooKeeper端口2181)。使用第三方监控工具(如Prometheus+Grafana、Ganglia、Nagios)监控HBase集群状态,重点关注以下指标: