Hadoop HA集群兩個NameNode都是standby

一、背景

今天給客戶的阿里云平臺搭建Hadoop HA集群時(shí),出現(xiàn)以下情況:

  1. 通過hdfs haadmin -getServiceState nn1hdfs haadmin -getServiceState nn2命令查看,發(fā)現(xiàn)兩個NameNode的狀態(tài)都是standby
  2. 通過hdfs dfsadmin -report命令查看,發(fā)現(xiàn)HDFS數(shù)據(jù)均為0
  3. 查看日志發(fā)現(xiàn):org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /home/input/file1.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and no node(s) are excluded in this operation.

二、錯誤原因

???????當(dāng)首次執(zhí)行命令hadoop namenode -format格式化NameNode時(shí),會在dfs.namenode.name.dir對應(yīng)路徑下生成current/VERSION文件,其中記錄了clusterID,同時(shí)dfs.datanode.data.dir對應(yīng)的DataNode目錄中也會生成current/VERSION文件,其中clustreID的與NameNode中clusterID的值相同。
???????當(dāng)再次執(zhí)行hadoop namenode -format命令時(shí),NameNode對應(yīng)的目錄下會重新生成clusterID,導(dǎo)致和DataNode對應(yīng)的clusterID不一致,從而造成上述問題。

三、解決方案

方案一:

  1. 關(guān)掉集群

./stop-dfs.sh

  1. 刪掉各個節(jié)點(diǎn)上DataNode對應(yīng)的目錄

rm -rf data

  1. 格式化NameNode

hadoop namenode -format

  1. 重啟集群

./start-dfs.sh

方案二:

  1. 關(guān)掉集群

./stop-dfs.sh

  1. 編輯clusterID使Namenode和DataNode同步

vim clusterID

  1. 重啟集群

./start-dfs.sh

注意:

在生產(chǎn)環(huán)境中,謹(jǐn)慎使用hadoop namenode -format命令。以上操作是在首次搭建集群且沒有重要數(shù)據(jù)的情況下執(zhí)行的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容