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

  1. (stop)
  2. if [ -f $pid ]; then
  3. TARGET_PID=`cat $pid`
  4. if kill -0 $TARGET_PID > /dev/null 2>&1; then
  5. echo stopping $command
  6. kill $TARGET_PID
  7. sleep $YARN_STOP_TIMEOUT
  8. if kill -0 $TARGET_PID > /dev/null 2>&1; then
  9. echo "$command did not stop gracefully after $YARN_STOP_TIMEOUT seconds: killing with kill -9"
  10. kill -9 $TARGET_PID
  11. fi
  12. else
  13. echo no $command to stop
  14. fi
  15. else
  16. echo no $command to stop
  17. 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的文件:

  1. [hadoop@hadoop2 hadoop]$ cat  /tmp/
  2. .esd-0/                                 Jetty_0_0_0_0_50075_datanode____hwtdwq/ orbit-gdm/
  3. .esd-500/                               Jetty_0_0_0_0_8042_node____19tj0x/      pulse-oVhJlALLtsum/
  4. [color=red]hadoop-hadoop-datanode.pid     [/color]         Jetty_0_0_0_0_8480_journal____.8g4awa/  pulse-rZOxQTGmpouA/
  5. [color=red]hadoop-hadoop-journalnode.pid[/color]           Jetty_hadoop2_50070_hdfs____.roo38u/    pulse-v2bO3KgmFqB6/
  6. [color=red]hadoop-hadoop-namenode.pid [/color]             Jetty_hadoop2_8088_cluster____2k46ah/   ssh-ZAuFHp2599/
  7. hadoop-hadoop-zkfc.pid                  keyring-5PcL7q/                         .X0-lock
  8. hsperfdata_hadoop/                      keyring-DGU27L/                         .X11-unix/
  9. .ICE-unix/                              keyring-prSBtx/                         [color=red][color=orange]yarn-hadoop-nodemanager.pid[/color][/color]
  10. Jetty_0_0_0_0_50070_hdfs____w2cu08/     keyring-wrTBmk/                         [color=darkred]yarn-hadoop-resourcemanager.pid[/color]

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

  1. [hadoop@hadoop2 hadoop]$ cat  /tmp/yarn-hadoop-resourcemanager.pid
  2. 5232
  3. [hadoop@hadoop2 hadoop]$ rm /tmp/yarn-hadoop-resourcemanager.pid
  4. [hadoop@hadoop2 hadoop]$ yarn-daemon.sh  stop resourcemanager
  5. 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 。

hadoop 关闭进程时报错no 进程 to stop的更多相关文章

  1. Hadoop执行作业时报错:java.lang.OutOfMemoryError: Java heap space

    常常被一些用户问到,说“为什么我的mapreduce作业总是运行到某个阶段就报出如下错误,然后失败呢?以前同一个作业没出现过的呀?” 10/01/10 12:48:01 INFO mapred.Job ...

  2. Hadoop 格式化namenode时报错警告:WARN common.Util: Path /data/dfs/name should be specified as a URI in configuration

    格式化namenode时报错警告:WARN common.Util: Path /data/dfs/name should be specified as a URI in configuration ...

  3. eclipse链接Hadoop集群时报错Error:Call From xxx/xxx.xxx.xxx.xxx to hostname1:9000 failed on connection exception

    今天用eclipse连接Hadoop集群的时候突然给我报了这样一个错误:Error:Call From xxx/xxx.xxx.xxx.xxx to hostname1:9000 failed on ...

  4. Hadoop上传文件时报错: could only be replicated to 0 nodes instead of minReplication (=1)....

    问题 上传文件到Hadoop异常,报错信息如下: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /home/inpu ...

  5. 解决ThinkPHP关闭调试模式时报错的问题汇总

    解决ThinkPHP关闭调试模式时报错的问题汇总 案例一: 最近用ThinkPHP开发一个项目,本地开发测试完成上传到服务器后,第一次打开正常,再刷新页面时就出现 "页面调试错误,无法找开页 ...

  6. GoldenGate 复制进程报错"OGG-01296 Error mapping",丢弃文件报错“Mapping problem with delete record (target format)”,且实际条目存在

    故障描述: (1).复制进程 Abended,通过view report语句查看可发现类似如下的报错: 2017-10-23 15:01:43 ERROR OGG-01296 Error mappin ...

  7. mac关闭占用某个端口的进程

    在启动项目的时候有时候会提示端口被占用,但是怎么都找不到那个关闭进程的地方,可以直接通过命令行关闭这个进程: 比如要关闭:8000端口的进程: 1. 查找端口进程: lsof -i: 会把所有的占用8 ...

  8. Ubuntu 在终端关闭情况下仍然运行进程

    参考: 让Linux关闭终端(关闭SSH等)后,程序继续运行 Ubuntu 在终端关闭情况下仍然运行进程 在 Ubuntu 16.04 系统下使用 screen 命令在终端关闭情况下仍然运行进程.具体 ...

  9. hadoop安装时报错 /usr/local/hadoop-2.6.0-stable/hadoop-2.6.0-src/hadoop-hdfs-project/hadoop-hdfs/target/findbugsXml.xml does not exist

    安装时报错:Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.7:run (site) on project ...

随机推荐

  1. excel用vlookup,lookup时查询数据需要排序

    如题,排出来的数据不对,之前没有是看清楚..所以记下来,日是后要小心点....

  2. CXF之jaxws:endpoint对spring bean的引用

    由于CXF对spring的无缝支持,CXF的使用,经常与spring捆绑在一起.随之而起的,自然是想在jaxws:endpoint中引用spring bean.在CXF提供的HelloWorld例子中 ...

  3. IOS 给图片添加水印 打印文字

    1.加文字   -(UIImage *)addText:(UIImage *)img text:(NSString *)text1  {           //get image width and ...

  4. Apache benchmark对网站进行压力测试

    Apache Benchmark下载:http://down.tech.sina.com.cn/page/3132.html ab 的全称是 ApacheBench , 是 Apache 附带的一个小 ...

  5. DOM笔记(四):HTML 5 DOM复杂数据类型

    HTML 5 DOM定义了一下集合.列表等复杂的数据类型用于实现便捷的操作.相对于HTML 4 DOM,HTML 5 DOM增加了HTMLCollection.DOMTokenList.DOMStri ...

  6. git 记录

    在官网有详细的教程http://git-scm.com/book/zh/%E8%B5%B7%E6%AD%A5 查看分支和日志的两个工具:gitk 和 tig ,两个都有 --all 参数,可以查看所有 ...

  7. leetcode—sqrt

    1.题目描述   Implement int sqrt(int x).   Compute and return the square root of x. 2.解法分析 很明显,用二分搜索可解,但是 ...

  8. [Hive - Tutorial] Querying and Inserting Data 查询和插入数据

    Querying and Inserting Data Simple Query Partition Based Query Joins Aggregations Multi Table/File I ...

  9. 如何在安裝SELinux的环境执行Quartus II

    (原創) 如何在安裝SELinux的環境執行Quartus II? (SOC) (Quartus II) (Linux) (RedHat) Abstract一般人安裝Linux時,也會同時安裝SELi ...

  10. 用java获取歌曲文件的专辑封面元信息

    几个个软件: 1, Jaudioatgger: 链接 2, mp3agic 链接 3, Java mp3 id3 tag library  (推荐用上面两个) 其它: android-midi-lib