部署hadoop叢集ha模式常見的問題,以及解決方案
1. 叢集中的某個datanode無法啟動。
原因:可能是該節點的clusterId和master上的不一樣了,修改clusterId和master一樣的就行了。如下:
在core-site.xml中找到配置的hadoop.tmp.dir,往下找/dfs/name/current下有個VERSION檔案,開啟如下:
對比master上的clusterID,修改為mater上的ID就行了。
2. 格式化hdfs的時候出錯
出現了No Route to Host from ***** to****等資訊,首先要保證各個節點配置額ssh免密碼登入,然後看看是否關閉了某個節點的防火牆,本人遇見過一次,就是某個節點的防火牆忘記了關閉。
3. JAVA_HOME is not set and javacould not be found in PATH.
啟動在一臺機器上啟動其他機器上的zookeeper的時候,出現上面錯誤,但是單臺一個一個啟動的時候沒有問題,肯定是JAVA_HOME的原因,要在zookeeper的bin目錄下面的zkCli.sh檔案中加上JAVA_HOME=”**/**/”然後就能啟動了
4. 兩個namenode都是standby狀態,並且沒法自動切換。出現Operation category JOURNAL is not supported in state standby錯誤
首先要在hdfs-site.xml中配置zookeeper的地址,如下:
<property>
<name>ha.zookeeper.quorum</name>
<value>node1:2181,node2:2181,node3:2181</value>
</property>
下面要確保ha自動切換可用。
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
然後最重要的是要格式化一下zkfc,不然zkfc啟動不了。
hdfs zkfc –formatZK
5. name無法自動切換的問題
<property>
<!-- -->
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>
網上好多教程是說這個值要配成sshfence,但是就是不能自動切換,原因參考:
https://blog.csdn.net/oneinmore/article/details/45250417
這個值改成shell(/bin/true)就可以了。
6. nodeManger啟動不起來,出現如下錯誤 Cannot support recovery with an ephemeral server port
解決方案如下,在yarn-site.xml中新增屬性資訊
<property>
<name>yarn.nodemanager.address</name>
<value>${yarn.nodemanager.hostname}:45454:45454</value>
</property>