前两天和朋友李天王吃饭的时候,聊到了一个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. IOS cocos2d笔记1

    结点添加.删除.获取1.结点:CCNode * childNode = [CCNode node]; 2.加入结点[myNode addChild:childNode z:0 tag:123];//z ...

  2. 分析一下FastDFS_java_client中TestClient.java这个文件以及跟它关联的这条线

    本来先打算上个图来说明一下这条线的,可是我的画图工具还没有安装好,我先把跟TestClient.java相关的几个文件代码贴上来,但是由于代码行数还是不少的,所以请大家阅读文章的时候先不要展开代码,等 ...

  3. HDU 5430 Reflect

    题意:问在一个圆形的镜面里,从任意一点发出一个光源,经n次反射回到起点的情况数是多少. 解法:直接贴题解吧…… 求1至N+1中与N+1互质的个数,即欧拉函数. 代码: #include<stdi ...

  4. C++ Primer学习_第1章

    源文件后缀 在大多数的系统中,源文件的名字以一个后缀为结尾,后缀是由一个句点后接一个或多个字符组成的.后缀告诉系统这个文件是一个C++程序.不同编译器使用不同的后缀命名约定,最常见的包括.cc..cx ...

  5. MultiSet

    Guava引进了JDK里没有的,但是非常有用的一些新的集合类型.所有这些新集合类型都能和JDK里的集合平滑集成.Guava集合非常精准地实现了JDK定义的接口.Guava中定义的新集合有: Multi ...

  6. Filezilla 多目录的访问设置

    [转:http://hi.baidu.com/yangjie312/blog/item/125a8405423d896d03088171.html] 设置好主目录之后,点击“Add”按钮可以把其余的目 ...

  7. codeforces 691D Swaps in Permutation DFS

    这个题刚开始我以为是每个交换只能用一次,然后一共m次操作 结果这个题的意思是操作数目不限,每个交换也可以无限次 所以可以交换的两个位置连边,只要两个位置连通,就可以呼唤 然后连通块内排序就好了 #in ...

  8. iOS开发常用输入校验

    1.数字字符校验 #define NUMBERSPERIOD @"0123456789." - (BOOL)CheckInput:(NSString *)string { NSCh ...

  9. mybatis系列-10-一对一查询

    10.1     需求 查询订单信息,关联查询创建订单的用户信息 10.2     resultType 10.2.1      sql语句 确定查询的主表:订单表 确定查询的关联表:用户表 关联查询 ...

  10. 对ArrayList 进行深拷贝

    ArrayList arr = new ArrayList(); arr.Add()); arr.Add()); arr.Add()); ArrayList arr2 = new ArrayList( ...