在hadoop集羣上面的每個java進程都會有一個文件記錄啓動時的PID,這樣可以確保進程正確啓動,在使用‘hadoop-daemon.sh stop 進程名 ’ 關閉進程時也會相應的把該PID文件刪除掉。該PID文件沒有實質的作用僅作爲一個標記文件存在。
這裏會有兩個場景牽扯到pid文件:
場景一:假設namenode進程被人爲的誤操作給kill -9 刪除掉了,但namenode的pid文件還在,使用hadoop-daemon.sh start namenode 命令是啓動不起來進程的。會提示該進程在某個進程號,但是使用jps命令查看卻又沒有。其實提示的進程號就是namenode.pid文件中存放的進程號。所以解決辦法就有了,先刪除該PID文件然後再啓動namenode就正常了。
場景二:假設datanode進程在正常運行中,但其pid文件被人爲刪除了,這時候如果想通過命令‘hadoop-daemon.sh stop datanode’ 會提示datanode 進程不存在無法關閉。這時如果需要停機就直接kill -9 就可以了。
說了這麼多關於pid文件的事情,下面說下如何配置修改這個pid文件的存放路徑:
在hadoop-env.sh 這個腳本中的HADOOP_PID_DIR = 來指定。是不是很簡單啊。