我的hadoop叢集部署在自己電腦虛拟機上,有時候我是挂起虛拟機,第二天再打開發現有些線程就挂了,比如namenode,好奇怪,當時看了一些文章說是和pid存儲有關,找到log看到找不到pid。因為基于java開發的程式,想要停止程式,必須通過程序pid來确定,而hadoop和hbase預設的情況下,會把pid檔案存儲在Linux上的/tmp目錄的某個目錄,程序名指令規則一般是架構名-使用者名-角色名.pid,而預設情況下,linux的tmp裡面的東西,一天會删除一次。
其實每次不用的時候挂壁,用的時候開啟就行,隻不過很麻煩,我寫了腳本沒成功,才挂機,一般不要挂起。
(1)修改hadoop-env.sh
修改如下,如果沒有下面的設定,可以直接添加:
上述配置,影響
NameNode
DataNode
SecondaryNameNode
程序pid存儲
(2)修改mapred-env.sh
JobHistoryServer
(3)修改yarn-env.sh
修改或者添加(不存在此項配置時),這裡面我沒有找到pid的環境設定變量,是以就直接添加了
NodeManager
ResourceManager
程序pid存儲
修改hbase-env.sh
HMaster
HRegionServer