程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

Hadoop HA 集群异常分析与解决方案

balukai 2025-06-03 20:21:44 文章精选 7 ℃

一、问题现象

  1. 警告日志手动执行 HA 状态管理时,系统提示自动故障转移已启用但仍强制操作13。关键警告:
WARN ha.HAAdmin: Proceeding with manual HA state management even though  
automatic failover is enabled...  
  1. NameNode 状态异常检查发现 nn1 和 nn2 均为 Standby 状态,无 Active 节点25。

二、原因分析

  1. 自动故障转移冲突ZooKeeper Failover Controller (ZKFC) 可能未正常运行,导致自动选举失败35。
  2. 配置不一致hdfs-site.xml 中自动故障转移配置 (dfs.ha.automatic-failover.enabled=true) 与实际操作冲突57。
  3. JournalNode 同步问题EditLog 未同步,导致 Standby 节点无法晋升为 Active28。

三、解决步骤

  1. 检查 ZKFC 服务
  2. 确保 ZKFC 进程在所有 NameNode 节点运行:
jps | grep DFSZKFailoverController  
  1. 若无输出,需手动启动:
hadoop-daemon.sh start zkfc  
```:ml-citation{ref="3,5" data="citationList"}  
  1. 强制切换 Active 节点
  2. 选择任一节点强制激活(示例为 nn1):
hdfs haadmin -transitionToActive --forcemanual nn1  
  1. 成功后验证状态:
hdfs haadmin -getServiceState nn1  # 应返回 active  
```:ml-citation{ref="2,5" data="citationList"}  
  1. 验证 JournalNode 同步
  2. 检查 JournalNode 日志是否有错误:
tail -n 100 $HADOOP_HOME/logs/hadoop-*-journalnode-*.log  
  1. 确保无 IOException 或权限问题38。
  2. 重启 HA 服务
  3. 按顺序重启集群:
stop-dfs.sh  
start-dfs.sh  
  1. 观察日志是否恢复 Active-Standby 模式57。

四、预防措施

  1. 配置检查确认 hdfs-site.xml 中以下参数一致:
<property>  
  <name>dfs.ha.automatic-failover.enabled</name>  
  <value>true</value>  
</property>  
```:ml-citation{ref="5,7" data="citationList"}  
  1. 监控 ZooKeeper使用 zkCli.sh 检查 ZK 集群健康状态:
echo "ruok" | nc zk-server 2181  
  1. 预期返回
最近发表
标签列表