Debian上HBase故障排查技巧
一 快速定位流程
- 检查进程与端口:用jps确认HMaster/RegionServer是否存活;用**netstat -tulpen | grep -E ‘16000|16010|2181’**排查端口占用(HBase默认端口:16000/16010,ZooKeeper:2181)。若端口被占用,释放或调整配置。
- 查看日志:第一时间查看**${HBASE_HOME}/logs/hbase--master-.log与hbase--regionserver-.log**,关注关键字如“Could not bind”“Unable to create ZooKeeper connection”“No valid filesystem found”。
- 依赖健康:确认ZooKeeper会话正常(如zkCli.sh -server zk:2181 ls /hbase),确认HDFS的NameNode/DataNode运行且HBase根目录可访问(如hdfs dfs -ls /hbase)。
- 集群状态:在hbase shell执行status 'detailed’查看RegionServer在线与负载;必要时用hbase hbck -details <表名>检查表一致性,异常时用hbase hbck -repair修复。
- 客户端连通:核对客户端hbase-site.xml中hbase.zookeeper.quorum与hbase.zookeeper.property.clientPort是否与集群一致。
二 常见故障与修复要点
- ServerNotRunningYetException:多由HMaster未起/RegionServer崩溃/ZooKeeper或HDFS不可用/端口冲突/配置错误/资源不足引起。按顺序核验进程、日志、ZK与HDFS、端口占用与JVM堆大小,必要时调整HBASE_MASTER_OPTS/HBASE_REGIONSERVER_OPTS。
- 写入阻塞或超时:检查MemStore是否刷写受限(列族参数hbase.hregion.memstore.flush.size、集群参数hbase.regionserver.global.memstore.size),必要时执行flush ‘<表名>’;观察WAL异常(如WALEdit/CorruptWAL),严重时用WALPlayer恢复;临时放宽hbase.rpc.timeout。
- Region未分配或不一致:用hbck -details定位,执行hbck -repair;单个Region异常可尝试assign ‘’。
- 页面或端口访问异常:老版本HBase的60010页面需显式开启hbase.master.info.port;若访问不了,先确认进程与端口监听,再检查防火墙/安全组。
- 时间漂移:节点间时间差过大会导致会话异常,建议用NTP统一校时(如ntpdate cn.pool.ntp.org),并校准时区。
三 Debian系统层面的检查
- Java与版本:HBase需要Java 8+。在Debian上可执行sudo apt-get install openjdk-8-jdk,并用java -version验证。
- 文件描述符与权限:为hbase用户提升nofile限制(如**/etc/security/limits.conf添加“hbase nofile 32768”),并修正HBASE_HOME/logs与HBASE_HOME/data**(或HDFS上的**/hbase**)的属主与权限。
- 防火墙与网络:测试环境可临时关闭防火墙;生产环境需放行16000/16010/2181与相关服务端口,确保节点间互通。
- 本地与HDFS空间:用df -h与hdfs dfsadmin -report核查磁盘余量,避免因空间不足导致写入或启动失败。
四 日志与监控
- 日志定位:HBase日志默认在**${HBASE_HOME}/logs/,按组件与主机区分,使用tail -f或grep检索异常关键字;必要时结合jps**确认进程与日志对应关系。
- 可视化与健康检查:通过HBase Web UI(如16010/16030)查看Master/RegionServer状态与负载;在hbase shell用status 'detailed’与hbck做一致性校验。
- 监控与告警:在Debian上可选Prometheus+JMX Exporter采集JVM/RegionServer指标,或用Zabbix/Ganglia做主机与应用层监控,结合阈值告警实现主动运维。
五 高频命令清单
| 目标 |
命令示例 |
| 进程与端口 |
jps |
| 服务健康 |
echo “status” |
| 日志查看 |
tail -n 200 ${HBASE_HOME}/logs/hbase--master-.log |
| 表一致性 |
hbase hbck -details <表名>;hbase hbck -repair |
| 写入与刷写 |
hbase shell> describe ‘<表名>’;flush ‘<表名>’ |
| 时间同步 |
ntpdate -d cn.pool.ntp.org && ntpdate cn.pool.ntp.org |
| JVM与端口 |
jstat -gcutil ;lsof -i :16000 |
提示:对生产环境执行修复(如hbck -repair、清理HDFS数据)前务必做好备份与变更窗口评估,避免不可逆数据风险。