HBase故障排查在Ubuntu上
小樊
34
2025-12-30 10:33:17
Ubuntu上HBase故障排查速查手册
一 快速定位流程
- 进程与端口
- 查看进程:运行jps,确认是否存在HMaster、HRegionServer(必要时也检查QuorumPeerMain)。
- 检查端口:常见端口包括16010(HMaster Web UI)、2181(ZooKeeper)、8088(YARN)、9000/8020(HDFS NameNode RPC)。端口占用可用sudo lsof -i :端口定位并释放。
- 日志与界面
- 日志路径:$HBASE_HOME/logs/,优先查看hbase--master-*.log与hbase--regionserver-*.log,用**grep -i “error|exception”**快速筛选根因。
- Web UI:HMaster UI 默认http://:16010;Hadoop ResourceManager UI http://:8088。
- 基础连通性
- 使用telnet 或nc -vz 验证到ZooKeeper 2181、HDFS 8020/9000、HMaster 16010的连通性。
- 资源与存储
- 资源:free -h、top/htop、iostat -x 1、vmstat 1;
- 存储:df -h,关注HDFS hbase.rootdir所在磁盘与本地数据目录空间。
二 常见故障与修复要点
- Java版本不兼容
- 现象:启动报Unsupported major.minor version。
- 处理:执行java -version确认为JDK 8 或 11(推荐OpenJDK 11);多版本时用sudo update-alternatives --config java切换。
- 端口冲突
- 现象:启动报Address already in use(如16010)。
- 处理:sudo lsof -i :16010查PID后kill -9 ,再重启。
- 权限问题
- 现象:Permission denied(如无法访问**/usr/local/hbase**)。
- 处理:sudo chown -R : /usr/local/hbase;HDFS 目录按需设置权限(生产不建议777)。
- ZooKeeper未启动或配置错误
- 现象:HMaster起不来,日志含Connection refused或ZooKeeper not running。
- 处理:启动ZK(zkServer.sh start),用zkServer.sh status确认;在hbase-site.xml核对hbase.zookeeper.quorum。
- HDFS安全模式导致写入失败
- 现象:Shell执行list/put报ServerNotRunningYetException或Safe mode is ON。
- 处理:hdfs dfsadmin -safemode get查看;若为ON执行hdfs dfsadmin -safemode leave。
- JAR包冲突与类加载问题
- 现象:ClassNotFound、NoSuchMethodError、SLF4J多绑定。
- 处理:在**$HBASE_HOME/lib/client-facing-thirdparty移除冲突的slf4j-log4j12-*.jar**;在hbase-env.sh设置export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true。
- RegionServer未启动或频繁崩溃
- 现象:Master UI显示0个RegionServer,或日志出现OutOfMemoryError、RegionTooBigException。
- 处理:查看RegionServer日志;在hbase-env.sh调大堆内存(如**-Xms4g -Xmx4g**);Region过大(如**>10GB**)用**split ‘table’,‘rowkey’**拆分。
- 表/列族/Region异常
- 现象:Namespace not found、Invalid column family、Region not online。
- 处理:先create_namespace;核对列族定义;在Master UI检查Region分配,必要时assign ‘region_id’。
- 系统资源不足
- 现象:进程被OOM kill或No space left on device。
- 处理:free -h/df -h确认资源;为HBase设置合理堆(如物理内存的**~70%**),清理或扩容磁盘。
- 主机名解析错误
- 现象:HMaster几秒后退出,ZK报KeeperErrorCode = NoNode for /hbase/master;或HBase Shell报ServerNotRunningYetException。
- 处理:检查**/etc/hosts与hostname**,避免将127.0.1.1错误映射到主机名;确保core-site.xml的fs.defaultFS与集群实际地址一致。
三 关键配置与最小示例
- 分布式模式常用配置(hbase-site.xml)
- 指定根目录与ZK:
- hbase.cluster.distributedtrue
- hbase.rootdirhdfs://:9000/hbase
- hbase.zookeeper.quorum,,
- hbase.zookeeper.property.clientPort2181
- 单机/伪分布式本地存储(测试用)
- hbase.rootdirfile:///DIRECTORY/hbase(避免写到**/tmp**以免重启丢失)
- 环境变量与类加载
- 在hbase-env.sh设置JAVA_HOME;如需规避Hadoop类路径干扰,设置HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true。
四 重启顺序与常用命令清单
- 启停顺序
- 正常:start-all.sh → start-hbase.sh;
- 停止:stop-hbase.sh → stop-all.sh(若HBase未停稳,先用jps定位并kill相关进程,再按顺序停)。
- 常用命令
- 进程与连通:jps;lsof -i :端口;telnet/nc;
- HDFS:hdfs dfsadmin -safemode get/leave;
- HBase Shell:
- 命名空间:create_namespace ‘my_ns’;
- 表操作:create ‘t’,‘cf’、put ‘t’,‘r’,‘cf:c’,‘v’、scan ‘t’;
- Region:split ‘t’,‘rk’、assign ‘region_id’;
- 日志排查:grep -i “error|exception” $HBASE_HOME/logs/hbase--master-.log。
五 监控与预防
- 自带与系统工具
- 进程/日志/UI:用jps、$HBASE_HOME/logs/、Master UI :16010、YARN UI :8088;
- 系统:top/htop、vmstat 1、iostat -x 1、free -h、df -h;历史数据用sar。
- 第三方监控
- Zabbix(模板化监控HBase与系统指标);
- Prometheus + Grafana + hbase_exporter(JMX指标如BlockCache命中率、Compaction队列可视化与告警)。
- 日志与维护
- 配置logrotate管理**$HBASE_HOME/logs/*.log**(如每日轮转、保留7天、压缩);
- 设定告警阈值:如RegionServer CPU > 80% 持续5分钟、读/写延迟 > 1s/2s、BlockCache命中率 < 80%。