一、背景
目前namenode使用了ha的部署模式,但系統會經常出現ha的自動切換(namenode節點其實正常)。經過調研發現可能的原因如下:
HealthMonitor check本地namenode的rpc端口時超時,導致HealthMonitor認爲namenode掛掉。
zk上的session timeout,導致丟掉當前持有的active鎖(temp節點),引起自動切換。
二、優化
下面的優化將針對1)和2)調整相應的超時參數,看是否起效。修改core-site.xml
<!-- HealthMonitor check namenode 的超時設置,默認50000ms,改爲5mins --> <property> <name>ha.health-monitor.rpc-timeout.ms</name> <value>300000</value> </property> <!-- zk failover的session 超時設置,默認5000ms,改爲3mins --> <property> <name>ha.zookeeper.session-timeout.ms</name> <value>180000</value> </property>
三、操作影響
無,不需要重啓hadoop,不會引起namenode切換
四、操作步驟
下面操作假設master1(active),master2(standby),只有按照該順序操作,才能實現namenode不切換
1)登陸master2(standby),註釋掉crontab中的restart-zkfc.sh任務,
執行
sbin/hadoop-daemon.sh stop zkfc
2)登陸master1(active),註釋掉crotab中的restart-zkfc.sh任務,執行
sbin/hadoop-daemon.sh stop zkfc
3)備份master1和master2的core-site.xml文件,將上述配置項加到master1和master2的core-site.xml配置文件中
4)登陸master1(active),執行
sbin/hadoop-daemon.sh start zkfc
5)登陸master2(standby),執行
sbin/hadoop-daemon.sh start zkfc
6)check
hadoop集羣狀態
7)重要!!!
登錄master1和master2,恢復crontab中的restart-zkfc.sh任務
8)完成
注意事項
1)需要先註釋掉機器上的crontab任務restart-zkfc.sh,否則該程序會自動拉起zkfc進程。導致namenode
active產生切換
2)任務完成後要恢復crontab中註釋掉的restart-zkfc.sh任務