温馨提示×

HBase故障排查在CentOS中怎么进行

小樊
40
2025-12-09 21:46:40
栏目: 智能运维

CentOS上HBase故障排查实操手册

一、快速定位流程

  • 明确现象:是服务不可用读写延迟高Region无法上线、还是启动失败
  • 查看进程与端口:用jps确认HMaster/RegionServer是否存在;用**netstat -tulpen | grep -E ‘16000|16010|16020|16030|2181’**排查端口占用。
  • 查看日志:优先看HMaster/RegionServer日志(常见路径:/var/log/hbase/),关注异常关键词如Connection refused、Session expired、Permission denied、OutOfMemoryError
  • 检查依赖:确认ZooKeeperHDFS健康(进程、端口、HDFS是否处于安全模式)。
  • 基础资源:用top/free/df核查CPU、内存、磁盘空间
  • 配置核对:重点检查hbase-site.xml中的hbase.rootdir、hbase.zookeeper.quorum及分布式开关等。
  • Shell与运维命令:用hbase shell执行status 'detailed’观察集群状态;用hbck检查一致性;必要时调整balance_switch
  • 网络与安全:核查**/etc/hosts**解析、firewalld/SELinux策略是否阻断访问。

二、常见故障与修复对照表

症状 快速检查 修复建议
HMaster/RegionServer起不来 jps无进程;端口16000/16010/16020/16030被占用;日志报“Could not bind to address” 释放或更换端口;确认JAVA_HOME与版本兼容;检查hbase-site.xml关键配置;必要时清理临时文件后重启
ZooKeeper连接异常(ConnectionLoss/Session expired) zkCli.sh连不通;ZK未启动或会话超时 启动ZK集群;核对hbase.zookeeper.quorum;适度增大ZK会话超时;检查ZK负载与版本兼容
HDFS相关报错(Permission denied/No valid filesystem/安全模式) HDFS目录权限错误;NameNode在SafeMode;core-site/hdfs-site指向错误 执行hdfs dfs -chown -R hbase:hadoop /hbase;必要时hdfs dfsadmin -safemode leave;校正hbase.rootdir的HDFS地址
Region无法上线/分布不均 hbck报不一致;修改主机名后meta异常 在hbase shell执行scan 'hbase:meta’定位异常行;用hbck -fixAssignments修复分配;必要时调整负载均衡策略
读写延迟高/抖动 top/htop见CPU/GC尖峰;线程堆积 jstack分析热点线程;优化memstore/blockcachehandler数;考虑预分区压缩、合并策略与Bulk load后Major Compaction
ServerNotRunningYetException HMaster未就绪;依赖未起或配置错误 按依赖顺序启动(ZK→HDFS→HBase);核对ZK与HDFS连通性;修正配置与端口冲突后重启

三、关键命令清单

  • 进程与端口
    • jps | egrep “HMaster|HRegionServer|QuorumPeerMain”
    • ss -lntp | egrep “16000|16010|16020|16030|2181”
  • ZooKeeper
    • ${ZK_HOME}/bin/zkServer.sh status
    • ${ZK_HOME}/bin/zkCli.sh -server zk1:2181 ls /hbase
  • HDFS
    • hdfs dfsadmin -safemode get
    • hdfs dfsadmin -safemode leave
    • hdfs dfs -ls /hbase
    • hdfs dfs -chown -R hbase:hadoop /hbase
  • HBase运维
    • hbase shell
      • status ‘detailed’
      • balance_switch on/off
      • scan ‘hbase:meta’
    • hbase hbck
    • hbase hbck -fixAssignments tableName
  • 系统资源
    • top/htop、free -m、df -h
  • JVM诊断
    • jstack /tmp/rs.jstack

四、配置与网络检查要点

  • 配置文件
    • hbase-site.xml:确保hbase.rootdir指向正确的HDFS路径;hbase.zookeeper.quorum列出全部ZK节点;伪分布式将hbase.cluster.distributed设为true;必要时将hbase.unsafe.stream.capability.enforce设为false以规避启动报错。
    • 环境脚本:在hbase-env.sh中设置合适的JAVA_HOMEHBASE_HEAPSIZE,避免OOM。
  • 主机与解析
    • 核对**/etc/hostshostname一致,避免Region因主机名变更导致meta**不一致。
  • 防火墙与SELinux(测试环境可临时关闭,生产环境建议按需放通)
    • systemctl stop firewalld(测试)
    • firewall-cmd --zone=public --add-port=16000/tcp --permanent && firewall-cmd --reload
    • setenforce 0(测试);生产环境在**/etc/selinux/config中改为SELINUX=permissive/disabled**并重启

五、数据一致性与恢复

  • 一致性自检与修复
    • 使用hbck全面检查;对“Region未部署/分配异常”等问题,先执行hbck -fixAssignments,再复核直至无不一致。
  • 备份与回滚
    • 利用快照(snapshot)进行时间点恢复;必要时从备份HFile层面恢复。
  • WAL与复制
    • 异常宕机后可依赖WAL(Write-Ahead Log)进行恢复;跨集群replication异常时,核查peer状态与WAL积压

0