1. hdfs機器遷移,執行sbin/stop-dfs.sh
報錯:
dchadoop010.dx.momo.com: no namenode to stop
dchadoop009.dx.momo.com: no namenode to stop
dchadoop010.dx.momo.com: no datanode to stop
dchadoop009.dx.momo.com: no datanode to stop
dchadoop011.dx.momo.com: no datanode to stop
Stopping journal nodes [dchadoop009.dx.momo.com dchadoop010.dx.momo.com dchadoop011.dx.momo.com]
dchadoop010.dx.momo.com: no journalnode to stop
dchadoop009.dx.momo.com: no journalnode to stop
dchadoop011.dx.momo.com: no journalnode to stop
Stopping ZK Failover Controllers on NN hosts [dchadoop009.dx.momo.com dchadoop010.dx.momo.com]
dchadoop010.dx.momo.com: no journalnode to stop
dchadoop009.dx.momo.com: no zkfc to stop
無法關閉
問題的原因是hadoop在stop的時候依據的是啟動是儲存到pid檔案的pid.而預設的進程號儲存在/tmp下,linux 預設會每隔一段時間(一般是一個月或者7天左右)去刪除這個目錄下的檔案。因此刪掉hadoop- dc-namenode.pid檔案後,namenode自然就找不到datanode上的這個進程了。(不同的進程的進程id檔案名稱會有變化)
解決:
針對這次叢集關閉,我們需要做的是:首先保證叢集沒有負載,然後去手動殺死datanode/journalnode/zkfc最後去殺死namenode(注意順序)
永久解決:
在設定檔hadoop_env.sh中配置export HADOOP_PID_DIR可以解決這個問題。