1. 程式人生 > >大資料開發之Hadoop篇----pid檔案剖析

大資料開發之Hadoop篇----pid檔案剖析

這裡我們先看下在我還沒有啟hdfs那三個程序的時候,/tmp目錄下的情況:

現在我啟動一下hdfs三個程序:

這個時候有沒發現在/tmp目錄下多出了幾個檔案

這幾個檔案記錄的是什麼呢?

儲存的就是namenode這個程序的程序號,當我們關掉這幾個程序後,在/tmp目錄下的這幾個檔案也就消失了。那麼這幾個檔案究竟對我們的程序有什麼影響呢?老實說,對程序的執行是沒有什麼影響的,但是......

來我們看下刪除後的情況,我們就直接拿namenode的pid檔案來測試唄

我把namende的pid檔案刪除後,jps程序還在,現在我們再測試下是否可以讀寫hdfs呢?

還是能操作hdfs的,這個時候我們來關閉一下hdfs的程序

無法關閉namenode程序了,22059程序還在。

這個時候我們在次啟動hdfs看看下情況是什麼,尤其是/tmp中pid檔案裡的內容會是怎麼樣呢?

一切正常,尤其是jps出來的namenode的程序號還是22059。好,現在我們去看下/tmp目錄下的namenode的pid檔案裡的內容

對應我們之前說的pid檔案是儲存程序號的,但是現在的pid檔案裡的程序號和我們jps出來的程序號是不一樣的,為什麼呢?

我們用ps -ef來檢視下namenode這個程序啥回事

有兩個NameNode程序而且程序號都不一致了,現在我們可以得出的結論是,如果刪除了pid檔案雖然不影響hdfs的正常執行,但是不能正常關閉,重啟後的程序也非常混亂。那麼你們可能會說你不要手賤去刪除就好了,這裡就引出我們什麼要說這個的問題了,我們的pid檔案是在哪裡呀?/tmp目錄下呀,按照linux的機制是每一個月就清空一次/tmp目錄的東西,到時候系統自動幫你刪了pid檔案時,我們生產上雖然很少關閉hdfs程序,但有的時候也難免的吧,這個時候我們關閉也不行,重啟也混亂就不好了。

所以我們需要將pid檔案的儲存路徑給修改了,那麼在哪裡修改這個引數呢?

這個引數是配置在hadoop/etc/hadoop/hadoop-env.sh下的

就是這個引數了,一般預設是/tmp目錄下的,如果在生產上我們就要注意了。

這也是在生產上吃過虧的教訓呀,以後要注意了。