解決hadoop重啓時,hdfs停止不了,no namenode to stop問題

自己的集羣啓動挺長時間,有天改了文件,需要重啓,在主目錄下停止hdfs發現報錯,no namenode to stop.再jps一下,果然沒停掉.
no namenode to stop
網上查找原因,發現是hadoop啓動時會生成namenode/datanode/zkfc/journalnode等的pid文件,而hadoop的pid文件是默認保存在/tmp目錄下的,Linux系統默認會定時去清理這個目錄下的文件.所以是沒有pid文件而導致進程無法結束.
解決辦法.一個是直接手動kill掉hadoop的進程.
第二個,永久解決,修改hadoop的hadoop-env.sh配置文件,修改HADOOP_PID_DIR的路徑.

export HADOOP_PID_DIR=/home/office/hadoop-2.6.0-cdh5.14.0/pids

修改之後就可以了.

在停止yarn的時候也發生了同樣的問題. no resourcemanager tostop/no nodemanager to stop.查看yarn-daemon.sh腳本,在腳本註釋部分發現很關鍵的一句話
YARN_PID_DIR The pid files are stored. /tmp by default.
繼續往下看,看到這段代碼

if [ "$YARN_PID_DIR" = "" ]; then
  YARN_PID_DIR=/tmp
fi

瞬間頓悟了,跟hdfs一樣,yarn也有pid文件,而且pid文件默認是在/tmp文件夾下面.
解決辦法還是和hdfs一樣.先kill掉yarn的進程.再修改YARN_PID_DIR的路徑.YARN_PID_DIR=/home/office/hadoop-2.6.0-cdh5.14.0/pids

再來,停止jobhistoryserver.停止的時候果然報錯了no historyserver to stop.
此時我的內心波瀾不驚,甚至隱隱還有點期待,查看mr-jobhistory-daemon.sh腳本.果然,相同的配方,相同的味道.註釋腳本里面有一段代碼
# HADOOP_MAPRED_PID_DIR The pid files are stored. /tmp by default.
再往下走,相同的味道

if [ "$HADOOP_MAPRED_PID_DIR" = "" ]; then
  HADOOP_MAPRED_PID_DIR=/tmp
fi

解決辦法還是一樣,先kill掉jobhistoryserver進程,再修改mr-jobhistory-daemon.sh腳本的HADOOP_MAPRED_PID_DIR目錄.HADOOP_MAPRED_PID_DIR=/home/office/hadoop-2.6.0-cdh5.14.0/pids
完活.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章