HBase在CentOS上的故障排查指南
首先明确HBase集群的具体问题,常见表现包括:服务不可用(无法连接)、读写延迟升高、Region无法上线、启动失败、连接ZooKeeper异常等。故障表现是排查的起点,需针对性收集相关信息。
HBase日志是故障诊断的核心依据,关键日志路径为/var/log/hbase/(默认路径,可通过hbase-site.xml中的hbase.log.dir确认)。需重点检查以下日志文件:
hbase-*-master-*.log:HMaster进程日志,记录集群管理相关错误(如Region分配、元数据操作);hbase-*-regionserver-*.log:RegionServer进程日志,记录Region读写、RegionServer状态变化;java.lang.OutOfMemoryError、ConnectionLoss、RegionAlreadyAssignedException)。使用jps命令查看HBase关键进程是否运行:
jps
正常应存在HMaster(主节点)和HRegionServer(RegionServer节点)进程。若进程缺失,需结合日志分析启动失败原因(如端口冲突、配置错误、依赖服务未启动)。
HBase的核心配置文件需重点检查:
hbase-site.xml:确认以下关键参数设置正确:
hbase.cluster.distributed:分布式部署必须设为true;hbase.rootdir:指向正确的HDFS路径(如hdfs://namenode:9000/hbase);hbase.zookeeper.quorum:ZooKeeper集群地址(如localhost:2181);hbase.unsafe.stream.capability.enforce:建议设为false(避免HDFS兼容性问题)。core-site.xml(Hadoop配置):确认fs.defaultFS指向正确的HDFS NameNode地址。HBase依赖网络通信,需检查:
ping命令测试HBase节点(Master、RegionServer)之间的网络连通性;netstat -anp | grep <端口>或ss -tulnp | grep <端口>检查HBase关键端口(如HMaster的60000、RegionServer的16020)是否被占用。若端口被占用,可通过kill -9 <PID>终止占用进程,或修改hbase-site.xml中的端口号。HBase依赖HDFS作为底层存储,需确保HDFS正常运行:
hdfs dfsadmin -report查看HDFS集群状态(DataNode数量、存储空间、心跳状态);/var/log/hadoop-hdfs/)是否有异常(如NameNode not formatted、Disk full);status 'detailed':查看集群详细状态(包括RegionServer数量、Region分布);count '.*':统计所有表的行数(验证数据访问是否正常);scan 'hbase:meta':查看元数据表(排查Region映射问题)。hbase hbck:检查集群健康状态(如Region未分配、元数据不一致);hbase hbck -fixAssignments:修复Region分配问题(如Region未部署到任何RegionServer);hbase hbck tableName:检查指定表的元数据一致性。使用top、free、df等命令监控系统资源:
top命令查看CPU占用率,若HBase进程占用过高,需调整JVM堆大小(hbase-env.sh中的HBASE_HEAPSIZE)或优化查询;free -h查看内存使用情况,确保HBase有足够内存(建议预留1/3内存给操作系统);df -h查看磁盘空间,确保HDFS数据目录和HBase日志目录有足够空间(建议保留20%以上空闲空间)。hbase.master.initializationmonitor.timeout默认值过小);hbase.master.executor.serverops.threads(提升并行处理能力)和hbase.master.initializationmonitor.timeout(延长超时时间,如设为600000毫秒)。scan 'hbase:meta',删除有问题的Region元数据(需谨慎操作),重启HBase。hbase.zookeeper.session.timeout默认值过小);hbase.zookeeper.session.timeout(如设为60000毫秒),或检查ZooKeeper集群状态(zkCli.sh -server localhost:2181)。若上述步骤无法解决问题,需收集以下信息并通过HBase社区或官方文档寻求帮助:
hbase-site.xml、core-site.xml、hdfs-site.xml;