温馨提示×

CentOS如何处理HBase节点故障

小樊
47
2025-12-19 19:17:51
栏目: 智能运维

CentOS上HBase节点故障的标准处置流程

一 快速判定故障类型

  • 使用 HBase Shell 查看全局状态:执行 status ‘detailed’ 或 status ‘servers’,确认是否存在 dead region servers、集群负载是否异常。
  • 检查 HBase Master HA:在 Shell 中观察 master 状态;用 zkCli.sh 查看 /hbase/master 节点是否指向 active Master;必要时访问 http://:16010 查看 UI。
  • 查看日志定位根因:重点检查 /var/log/hbase/$HBASE_HOME/logs/ 下的 hbase-master-*.loghbase-regionserver-*.log
  • 校验依赖组件:确认 ZooKeeper 运行正常(zkServer.sh status)、HDFS 健康(如 hdfs fsck /、hdfs dfsadmin -report),避免因底层存储异常放大故障。
  • 基础资源与网络:在故障节点执行 top/free/dfping/traceroute/netstat,排除 CPU/内存/磁盘网络/端口 问题。

二 常见节点故障场景与处置

  • HMaster 故障(Active 异常或 Standby 未接管)

    1. 在 ZK 中确认 /hbase/master 是否存在且指向有效主机;
    2. 查看 Master 日志是否有 ZK session expired / Port in use 等错误;
    3. 重启 Standby Master:执行 $HBASE_HOME/bin/hbase-daemon.sh start master
    4. 若仍无 active Master,检查 hbase-site.xml 的分布式与 HA 配置(如 hbase.master.cluster.distributed、hbase.nameservices),必要时滚动重启相关服务。
  • RegionServer 故障(宕机、频繁 Full GC、端口占用)

    1. 在 Shell 中确认 dead region servers;UI 中查看 Last Contact 是否异常;
    2. 查看 RegionServer 日志 是否有 OutOfMemoryError / GC 超时 等;
    3. 优先尝试在本机重启:$HBASE_HOME/bin/hbase-daemon.sh start regionserver;若端口占用,释放端口或调整配置后再启;
    4. 若节点硬件/系统不可恢复,允许 Master 自动迁移 该节点上的 Region 到其他节点,待恢复后重新上线。
  • 数据一致性异常(Region 分布不均、元数据不一致)

    1. 使用 hbck 检查集群一致性:执行 $HBASE_HOME/bin/hbck
    2. 在业务低峰期执行修复:$HBASE_HOME/bin/hbck -repair;修复前建议备份 HBase 数据目录HDFS 对应目录
    3. 修复后重启相关服务并复核状态。

三 恢复后的验证与善后

  • 功能与状态验证:在 Shell 中执行 status ‘simple’,抽样 scan ‘your_table_name’ 验证读写;观察 HMaster UIRegion Servers 页面是否恢复正常。
  • 负载与健康复核:确认 Region 分布均衡、无 dead servers;复核 HDFSmissing blocks;必要时临时关闭均衡器 balance_switch ‘off’,迁移完成后 balance_switch ‘on’

四 预防与日常巡检要点

  • 高可用与监控:部署 多 Master,用 Prometheus+GrafanaAmbari/Cloudera Manager 监控关键指标;定期演练 Master 切换
  • 关键指标清单:
    • Master HA:active/standby 状态、ZK 的 /hbase/master 有效性;
    • RegionServer:在线数、Last ContactJVM GC/堆Compaction 队列
    • HDFS:块丢失、DataNode 健康;
    • ZooKeeper:会话与连接数。
  • 例行维护:定期 备份(快照/导出)、时钟同步(NTP)、磁盘/IO/网络 健康检查,降低节点故障概率与影响范围。

0