天天看點

Slave2: no datanode to stop(HADOOP_PID_DIR)

HADOOP_PID_DIR

本想在環境變量裡設定,在相關檔案裡直接尹用,但是我想起來那時候的JAVA_HOME都不行,還是一個一個設定吧。

有時候,我們對運作幾天或者幾個月的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 

(3)修改yarn-env.sh 

修改或者添加(不存在此項配置時),這裡面我沒有找到pid的環境設定變量,是以就直接添加了 

export YARN_PID_DIR=/ROOT/server/pids_hadoop_hbase 

NodeManager 

ResourceManager