hadoop程序pid檔案問題

2021-06-01 08:38:59 字數 968 閱讀 5428

由於機器伺服器維護需要,要求hadoop集群的一台伺服器停止服務,於是我就到那台伺服器去停止hadoop的datanode和tasktracker,執行以下命令:

bin/hadoop-daemon.sh stop datanode

竟然輸出:

no datanode to stop

但是檢視程序,卻發現datanode和tasktracker都還在執行,嘗試了好幾次都是同樣結果,最後我試圖使用namenode的命令停止:

bin/stop_dfs.sh

還是輸出:

no datanode to stop

不得已,只好使用暴力手段,直接kill -9 程序了。

在殺死hadoop程序之後,bin/hadoop-daemon.sh又可以正常使用了。不知道其他的hadoop使用者是否遇到過此問題??

但是問題不能就這麼算了,在網上查了下資料,沒找到滿意的結果。沒辦法,自己看**吧!

在看了hadoop-daemon.sh**後,我發現指令碼是通過pid檔案來停止hadoop服務的,而我的集群配置是使用的預設配置,pid檔案位於/tmp目錄下,於是我對比了/tmp目錄下hadoop pid檔案中的程序id和ps ax查出來的程序id,發現兩個程序id不一致,終於找到了問題的根源。

呵呵,趕緊去更新hadoop的配置吧!

修改hadoop-env.sh中的:hadoop_pid_dir = hadoop安裝路徑

然後根據集群hadoop程序的pid在hadoop安裝路徑下建立相應的pid檔案:

hadoop-hadoop執行使用者名稱-datanode.pid

hadoop-hadoop執行使用者名稱-tasktracker.pid

hadoop-hadoop執行使用者名稱-namenode.pid

hadoop-hadoop執行使用者名稱-jobtracker.pid

hadoop-hadoop執行使用者名稱-secondarynamenode.pid

hadoop程序pid檔案問題

hadoop啟動後的pid檔案預設配置是儲存在 tmp目錄下的,而linux下 tmp 目錄會定時清理,所以在集群執行一段時間後如果在停hadoop相關服務是會出現類似 no datanode to stop的錯誤提示,一般生產環境中我們需要重新修改pid的儲存路徑。由於機器伺服器維護需要,要求ha...

hadoop中pid檔案的坑

先說說pid檔案的預設位置為什麼必須修改,原因在我的hadoop部署那節也提到過是因為 tmp目錄下的檔案有30天不訪問的話就會自動清理。它的作用是程序的啟動和停止都需要依賴此對應的pid檔案 pid檔案預設是儲存在 tmp下的,如下圖 經過第二步的測試,修改pid檔案的話會影響hadoop的重啟,...

程序標識(pid)

每個linux下的程序都會分配唯一乙個程序標識 pid pid是個16位元的整數。pid就是process id type 的縮寫,c程式用到程序標識時,通常會用pid t來宣告程序標識變數,通過getpid 來獲得程序pid。通過getppid來獲得父程序的pid。讓我們來看一下pid的定義 開啟...