温馨提示×

HBase故障排查在Ubuntu上

小樊
34
2025-12-30 10:33:17
栏目: 智能运维

Ubuntu上HBase故障排查速查手册

一 快速定位流程

  • 进程与端口
    • 查看进程:运行jps,确认是否存在HMasterHRegionServer(必要时也检查QuorumPeerMain)。
    • 检查端口:常见端口包括16010(HMaster Web UI)、2181(ZooKeeper)、8088(YARN)、9000/8020(HDFS NameNode RPC)。端口占用可用sudo lsof -i :端口定位并释放。
  • 日志与界面
    • 日志路径:$HBASE_HOME/logs/,优先查看hbase--master-*.loghbase--regionserver-*.log,用**grep -i “error|exception”**快速筛选根因。
    • Web UI:HMaster UI 默认http://:16010;Hadoop ResourceManager UI http://:8088
  • 基础连通性
    • 使用telnet nc -vz 验证到ZooKeeper 2181HDFS 8020/9000HMaster 16010的连通性。
  • 资源与存储
    • 资源:free -htop/htopiostat -x 1vmstat 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 :16010PIDkill -9 ,再重启。
  • 权限问题
    • 现象:Permission denied(如无法访问**/usr/local/hbase**)。
    • 处理:sudo chown -R : /usr/local/hbase;HDFS 目录按需设置权限(生产不建议777)。
  • ZooKeeper未启动或配置错误
    • 现象:HMaster起不来,日志含Connection refusedZooKeeper not running
    • 处理:启动ZK(zkServer.sh start),用zkServer.sh status确认;在hbase-site.xml核对hbase.zookeeper.quorum
  • HDFS安全模式导致写入失败
    • 现象:Shell执行list/putServerNotRunningYetExceptionSafe mode is ON
    • 处理:hdfs dfsadmin -safemode get查看;若为ON执行hdfs dfsadmin -safemode leave
  • JAR包冲突与类加载问题
    • 现象:ClassNotFoundNoSuchMethodError、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,或日志出现OutOfMemoryErrorRegionTooBigException
    • 处理:查看RegionServer日志;在hbase-env.sh调大堆内存(如**-Xms4g -Xmx4g**);Region过大(如**>10GB**)用**split ‘table’,‘rowkey’**拆分。
  • 表/列族/Region异常
    • 现象:Namespace not foundInvalid column familyRegion 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/hostshostname**,避免将127.0.1.1错误映射到主机名;确保core-site.xmlfs.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相关进程,再按顺序停)。
  • 常用命令
    • 进程与连通:jpslsof -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 :16010YARN UI :8088
    • 系统:top/htopvmstat 1iostat -x 1free -hdf -h;历史数据用sar
  • 第三方监控
    • Zabbix(模板化监控HBase与系统指标);
    • Prometheus + Grafana + hbase_exporter(JMX指标如BlockCache命中率Compaction队列可视化与告警)。
  • 日志与维护
    • 配置logrotate管理**$HBASE_HOME/logs/*.log**(如每日轮转、保留7天、压缩);
    • 设定告警阈值:如RegionServer CPU > 80% 持续5分钟读/写延迟 > 1s/2sBlockCache命中率 < 80%

0