Hadoop NFS啓動失敗

問題描述:啓動Hadoop的NFS失敗。

查看日誌:顯示Failed to delete file or dir [/tmp/.hdfs-nfs]: it still exists.

原因:說明當前用戶對/tmp目錄沒有權限;

解決方法:可以用root用戶手動刪除該目錄;也可以對當前用戶賦予對/tmp操作的權限。本人採用暴力方式,手動刪除該/tmp/.hdfs-nfs目錄,重新啓動NFS,成功。

新問題:這樣對導致一個新問題。

當我修改了基本配置,需要停止集羣時,出現如下錯誤:

命令: ./stop-all.sh
Stopping namenode on [nn0]
nn0: no namenode to stop.
dn1: no datanode to stop.
Stopping secondary namenodes [nn0]
nn0: no secondarynamenode to stop

即:停止hadoop相應服務失敗,顯示後臺沒有相應進程在運行。可是事實是相應進程正在運行,且成功提供服務。

查找原因:本人通過調用stop-all.sh腳本執行關閉進程任務,該腳本實際調用stop-dfs.sh和stop-yarn.sh執行關閉任務,而其又分別調用hadoop-daemon.sh和yarn-daemon.sh。查看hadoop-deamon.sh腳本,實際是通過pid來停止相應Hadoop進程。也即是說,Hadoop在停止相應進程時,是通過kill掉相應pid實現。

而集羣默認配置的pid文件位於/tmp目錄下,在解決上一個問題時,把/tmp目錄刪除了,所以導致找不到pid。

網上資料說,linux系統默認每30天清理一次/tmp目錄下的文件,pid文件丟失將導致無法正確關閉相應進程。

解決方法:

通過jps獲取進程號,然後用kill -9 pid殺掉對應進程,停止集羣。

要徹底解決這個問題,最好是修改pid的存放路徑。修改配置文件/hadoop-env.sh,增加export HADOOP_PID_DIR=指定pid文件存放路徑。

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