前言:
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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/31441024/viewspace-2154931/