HDFS的PID整理

13545163656發表於2018-05-22
前言:
    Linux中可以透過PID找到對相應的程式號和程式目錄,ps -ef|grep pid可以單獨kill想要的pid;如果生產上想透過shell指令碼直接kill  `ps -ef|grep 服務名
 ,會把服務下所有多個程式和其他程式kill掉, 已hadoop為例可以讀檔案裡程式號指定kill掉‘;
    Hodoop的PID預設儲存路徑為/tmpPID內容為程式號;


為什麼說PID內容為程式號:
[hadoop@hadoop001 hadoop]$ jps
7857 DataNode
7748 NameNode
8774 Jps
8061 SecondaryNameNode

[hadoop@hadoop001 tmp]$ pwd
/tmp
[hadoop@hadoop001 tmp]$ cat hadoop-hadoop-datanode.pid 
7857
[hadoop@hadoop001 tmp]$ cat hadoop-hadoop-namenode.pid 
7748
[hadoop@hadoop001 tmp]$ cat hadoop-hadoop-secondarynamenode.pid
8061

觀察hadoop停止的指令碼,發現透過呼叫hadoop-daemons.sh停止指令碼,
[hadoop@hadoop001 sbin]$ cat stop-dfs.sh
#---------------------------------------------------------
# namenodes
NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -namenodes)
echo "Stopping namenodes on [$NAMENODES]"
"$HADOOP_PREFIX/sbin/hadoop-daemons.sh" \
  --config "$HADOOP_CONF_DIR" \
  --hostnames "$NAMENODES" \
  --script "$bin/hdfs" stop namenode
#---------------------------------------------------------
# datanodes (using default slaves file)
if [ -n "$HADOOP_SECURE_DN_USER" ]; then
  echo \
    "Attempting to stop secure cluster, skipping datanodes. " \
    "Run stop-secure-dns.sh as root to complete shutdown."
else
  "$HADOOP_PREFIX/sbin/hadoop-daemons.sh" \
    --config "$HADOOP_CONF_DIR" \
    --script "$bin/hdfs" stop datanode
fi
#---------------------------------------------------------

# 進入檢視hadoop-daemons.sh指令碼
[hadoop@hadoop001 sbin]$ cat hadoop-daemon.sh |grep pid
#   HADOOP_PID_DIR   The pid files are stored. /tmp by default.
pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid
    if [ -f $pid ]; then
      if kill -0 `cat $pid` > /dev/null 2>&1; then
        echo $command running as process `cat $pid`.  Stop it first.
    echo $! > $pid
    if [ -f $pid ]; then
      TARGET_PID=`cat $pid`
      rm -f $pid

總結:
1、
hadoop停止使用kill掉cat `cat $pid`目錄下動態pid,
 如果刪除pid目錄hadoop服務不會掛,但是呼叫dfs-stop.sh停止服務會出錯(no namenode to stop ,no datanodeto stop)

 2、生產環境要修改hadoop的pid預設/tmp儲存路徑,其他檔案也應該修改
/hadoop-2.8.1/etc/hadoop/hadoop-env.sh
export HADOOP_PID_DIR=/data/hadoop/tmp (mkdir and  chmod 777)
Linux環境下tmp的目錄預設30清除
-- 其他檔案也應該修改(待整理)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31441024/viewspace-2154931/,如需轉載,請註明出處,否則將追究法律責任。

相關文章