HDFS的PID整理
前言:
Linux中可以透過PID找到對相應的程式號和程式目錄,ps -ef|grep pid可以單獨kill想要的pid;如果生產上想透過shell指令碼直接kill `ps -ef|grep 服務名 ,會把服務下所有多個程式和其他程式kill掉, 已hadoop為例可以讀檔案裡程式號指定kill掉‘;
Hodoop的PID預設儲存路徑為/tmp,PID內容為程式號;
為什麼說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清除
-- 其他檔案也應該修改(待整理)
Linux中可以透過PID找到對相應的程式號和程式目錄,ps -ef|grep pid可以單獨kill想要的pid;如果生產上想透過shell指令碼直接kill `ps -ef|grep 服務名 ,會把服務下所有多個程式和其他程式kill掉, 已hadoop為例可以讀檔案裡程式號指定kill掉‘;
Hodoop的PID預設儲存路徑為/tmp,PID內容為程式號;
為什麼說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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 四軸PID思路整理
- PID
- PID控制
- HDFS 05 - HDFS 常用的 Java API 操作JavaAPI
- 【nginx】invalid PID number ““ in “/usr/local/nginx/logs/nginx.pid“Nginx
- pid,sid相互查詢,根據PID查詢sqlSQL
- HDFS 09 - HDFS NameNode 的高可用機制
- Linux檢視程式PID的方法?Linux
- PID 控制詳解
- mac查詢埠對應的PIDMac
- HDFS 命令:用於管理HDFS的Hadoop Shell命令大全Hadoop
- /proc/{pid}/maps解讀
- pid 控制演算法演算法
- HDFS
- HDFS 05 - HDFS 的後設資料管理(FSImage、EditLog、Checkpoint)
- MySQL The server quit without updating PID file xx/var/DESKTOP-BHVUG0D.pidMySqlServerUI
- MySQL中的pid與socket是什麼?MySql
- HDFS的讀寫流程
- HDFS的詳解(一)
- Mysql增量寫入Hdfs(二) --Storm+hdfs的流式處理MySqlORM
- Linux PID個數設定Linux
- Hadoop–HDFSHadoop
- hdfs命令
- 一篇適合入門的PID文章
- PID演算法的C語言實現演算法C語言
- HDFS的機架感知策略
- HDFS的體系結構
- ## 對HDFS的初步認識
- 常見的PID的演算法及程式碼示例演算法
- 深入淺出PID演算法演算法
- PID原理及調參經驗
- hdfs dfsadmin -fetchImage
- HDFS shell命令
- HDFS常用操作
- Hadoop HDFS(一)Hadoop
- Hadoop HDFS(二)Hadoop
- HDFS 03 - 你能說說 HDFS 的寫入和讀取過程嗎?
- HDFS成員的工作機制