设为首页 收藏本站
查看: 923|回复: 0

[经验分享] hadoop 关闭进程时报错no 进程 to stop

[复制链接]

尚未签到

发表于 2016-12-8 09:49:10 | 显示全部楼层 |阅读模式
原创,转载请注明出处

  前两天和朋友李天王吃饭的时候,聊到了一个hadoop的运维的很简单问题,感觉很有意思,以前也没有注意过,现在加以重现和整理。
  感谢李天王的分享。。。。
  翻看了yarn-deamon.sh stop部分的脚本:

(stop)
if [ -f $pid ]; then
TARGET_PID=`cat $pid`
if kill -0 $TARGET_PID > /dev/null 2>&1; then
echo stopping $command
kill $TARGET_PID
sleep $YARN_STOP_TIMEOUT
if kill -0 $TARGET_PID > /dev/null 2>&1; then
echo "$command did not stop gracefully after $YARN_STOP_TIMEOUT seconds: killing with kill -9"
kill -9 $TARGET_PID
fi
else
echo no $command to stop
fi
else
echo no $command to stop
fi

根据上面代码。在关闭hadoop的进程的时候,会首先TARGET_PID=`cat $pid`,后面的操作都
针对这个TARGET_PID。
首先发送kill -0 TARGET_PID来检测这个pid存在不存在,若存在那么就使用kill  TARGET_PID 来关闭进程。
第二个 kill -0 $TARGET_PID,意思是第一次删除失败的时候,则执行kill -9 $TARGET_PID。
  在默认情况下,hadoop会使用/tmp目录作为临时文件存放地点,包括pid的文件:

[hadoop@hadoop2 hadoop]$ cat  /tmp/
.esd-0/                                 Jetty_0_0_0_0_50075_datanode____hwtdwq/ orbit-gdm/
.esd-500/                               Jetty_0_0_0_0_8042_node____19tj0x/      pulse-oVhJlALLtsum/
hadoop-hadoop-datanode.pid              Jetty_0_0_0_0_8480_journal____.8g4awa/  pulse-rZOxQTGmpouA/
hadoop-hadoop-journalnode.pid           Jetty_hadoop2_50070_hdfs____.roo38u/    pulse-v2bO3KgmFqB6/
hadoop-hadoop-namenode.pid              Jetty_hadoop2_8088_cluster____2k46ah/   ssh-ZAuFHp2599/
hadoop-hadoop-zkfc.pid                  keyring-5PcL7q/                         .X0-lock
hsperfdata_hadoop/                      keyring-DGU27L/                         .X11-unix/
.ICE-unix/                              keyring-prSBtx/                         yarn-hadoop-nodemanager.pid
Jetty_0_0_0_0_50070_hdfs____w2cu08/     keyring-wrTBmk/                         yarn-hadoop-resourcemanager.pid

  由于/tmp会定期清除(以前认为只有在重启的时候,tmp才会清除,后来李天王提到由于tmpwatch的作用,会定期每隔240小时删除tmp的内容),会将pid清除,pid不存在的时候,就会报no *** to stop

[hadoop@hadoop2 hadoop]$ cat  /tmp/yarn-hadoop-resourcemanager.pid
5232
[hadoop@hadoop2 hadoop]$ rm /tmp/yarn-hadoop-resourcemanager.pid
[hadoop@hadoop2 hadoop]$ yarn-daemon.sh  stop resourcemanager  
no resourcemanager to stop


那么此时该怎么做呢,我之前的做法就是很粗暴的kill -9 pid关闭进程,幸亏由于hadoop的editlog日志机制,保证了数据不会丢失,若是其他。。。

  学习一下脚本,可以看出hadoop在关闭进程的时候是采取了比较保险妥当的方式。首先使用kill 而不是使用kill -9 来关闭进程。
  另外朋友们在平时运维的时候要首先使用kill TARGET_PID。kill -9的这种比较粗暴的方式,还是少用,之前使用在hadoop 升级实验的时候,在hdfs namenode -upgrade 之后,就直接使用kill -9 pid,居然java 虚拟机抛出了致命错误。
  虚拟机日志我作为附件放上去,希望有虚拟机方面的大牛能给我分析。。。
总结:1.修改你的hadoop的hdfs以及yarn的tmp目录,都要修改哦。
  2.关闭hadoop的时候请尽量使用kill 。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-311331-1-1.html 上篇帖子: Hadoop学习十五:Hadoop-Hdfs DataXceiverServer源码概述 下篇帖子: Win7 eclipse Hadoop Failed to set permissions of pathWin7eclipse Hadoop Failed t
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表