設置Hadoop+Hbase集羣pid文件存儲位置

有時候,咱們對運行幾天或者幾個月的hadoop或者hbase集羣作中止操做,會發現,中止命令無論用了,爲何呢? 
由於基於java開發的程序,想要中止程序,必須經過進程pid來肯定,而hadoop和hbase默認的狀況下,會把pid文件存儲在Linux上的/tmp目錄的某個目錄下,進程名命令規則通常是  框架名-用戶名-角色名.pid,而默認狀況下,linux的tmp裏面的東西,一天會刪除一次,因此把pid文件放在這裏面,並非長久之計,爲了安全起見,咱們仍是放到一個固定的目錄下最好,固然不能放在/tmp下 

如何配置避免把進程文件寫到臨時目錄下面呢? 

一:Hadoop配置: 

(1)修改hadoop-env.sh 
修改以下,若是沒有下面的設置,能夠直接添加: 

export HADOOP_PID_DIR=/ROOT/server/pids_hadoop_hbase 
export HADOOP_SECURE_DN_PID_DIR=/ROOT/server/pids_hadoop_hbase 

上述配置,影響 
NameNode 
DataNode 
SecondaryNameNode 
進程pid存儲 



(2)修改mapred-env.sh 
修改 
export HADOOP_MAPRED_PID_DIR=/ROOT/server/pids_hadoop_hbase 

上述配置,影響 
JobHistoryServer 
進程pid存儲 

(3)修改yarn-env.sh 
修改或者添加(不存在此項配置時),這裏面我沒有找到pid的環境設置變量,因此就直接添加了 

export YARN_PID_DIR=/ROOT/server/pids_hadoop_hbase 

上述配置,影響 
NodeManager 
ResourceManager 
進程pid存儲 


二:Hbase的配置 
修改hbase-env.sh 

export HBASE_PID_DIR=/ROOT/server/pids_hadoop_hbase 


上述配置,影響 
HMaster 
HRegionServer 

進程pid存儲 


再次啓動集羣,就會發現指定的pids_hadoop_hbase下有進程pid文件已經存儲進來: 


 




如此以來,就安全多了,再次關閉集羣時,不用再擔憂進程文件找不到,而致使只能暴力 kill 相關 
進程,這樣作比較危險,通常狀況不推薦這樣作 

參考文章: 
http://blog.csdn.net/xiao_jun_0820/article/details/35222699 
相關文章
相關標籤/搜索