原创,转载请注明出处
前两天和朋友李天王吃饭的时候,聊到了一个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/
[color=red]hadoop-hadoop-datanode.pid [/color] Jetty_0_0_0_0_8480_journal____.8g4awa/ pulse-rZOxQTGmpouA/
[color=red]hadoop-hadoop-journalnode.pid[/color] Jetty_hadoop2_50070_hdfs____.roo38u/ pulse-v2bO3KgmFqB6/
[color=red]hadoop-hadoop-namenode.pid [/color] 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/ [color=red][color=orange]yarn-hadoop-nodemanager.pid[/color][/color]
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
[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 。
分享到:
相关推荐
非停机Hadoop(Non-Stop Hadoop)是WANdisco开发的一款产品,旨在通过Active-Active架构为Hadoop带来100%的持续可用性。这种架构克服了传统HA的限制,例如单点故障和必须在物理距离相近的数据中心内部署。Active-...
Moving Hadoop to The Cloud 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
本资源"【IT十八掌徐培成】Hadoop第02天-01.Hadoop基础回顾-进程初识-webui.zip"聚焦于Hadoop的基础知识,特别是对Hadoop进程的理解以及如何通过Web UI进行监控。这里我们将深入探讨Hadoop的核心组件、进程架构以及...
格式化namenode时 报错 No Route to Host from node1/192.168.3.101 to hadoop05:8485 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host解决方案 一、报错信息概要: 在配置...
当启动hadoop或者使用ssh时出现: 输入ifconfig指令发现:自己之前配置的ip:192.168.79.103地址已经发生了变化 怎么解决办法呢? 如下步骤: 重新修改静态ip 输入vi /etc/udev/rules.d/70-persistent-net.rules...
启动所有的守护进程,具有hadoop完整的功能,可以使用HDFS、MapReduce和Yarn,并且这些守护进程运行在集群中,可以真正的利用集群提供高性能,在生产环境下使用。 本文主要讲解Hadoop的完全分布式安装
This course teaches you how to use SAS programming methods to read, write, and manipulate Hadoop data. Base SAS methods that are covered include reading and writing raw data with the DATA step and ...
Hadoop还提供了一些用于简化启动和停止操作的辅助脚本,如start-dfs.sh和start-mapred.sh用于启动Hadoop的DFS和MapReduce服务,而stop-dfs.sh和stop-mapred.sh则用于停止这些服务。此外,使用jps命令可以检查守护...
6、启动时报错java.io.IOException: File jobtracker.info could only be replicated to 0 nodes, instead of 1: 解决方法:首先,检查防火墙是否关闭,是否对jobtracker.info文件进行了acl权限设置,或者是否已经...
The professional's one-stop guide to this open-source, Java-based big data framework, Professional Hadoop is the complete reference and resource for experienced developers looking to employ Apache ...
相信对于大部分的大数据初学者来说,一定遇见过hadoop集群无法正常关闭的情况。有时候当我们更改了hadoop内组件的配置文件后,必须要通过重启集群来使配置文件生效。 但往往一stop-all.sh,集群下方总会出现下面的...
ERROR org.apache.hadoop.mapred.TaskTracker: Can not start task tracker because java.io.IOException: Failed to set permissions of path: \tmp\hadoop-admin \mapred\local\ttprivate to 0700 at org.apache...
它包含了运行Hadoop守护进程(如Namenode、Datanode和TaskTracker)所需的特定于平台的函数实现,这些函数通常涉及到操作系统级别的操作,如文件系统操作、网络通信和进程管理。`hadoop.dll`确保Hadoop可以在Windows...
4. 如果有防火墙或安全软件,需要确保它们不会阻止Hadoop进程间的通信。 在Windows上运行Hadoop可能不如在Linux环境那样常见,因为Hadoop最初是为Linux设计的。然而,通过 Cygwin 或其他模拟Linux环境的工具,可以...
这个工具集包含了多种命令,如创建HDFS目录、设置HDFS权限、管理Hadoop守护进程等。在Linux上,这些功能通常由`hadoop`命令行工具完成,但在Windows上,由于操作系统本身的差异,这些操作需要通过`winutils.exe`来...
其次,`winutils.exe`是Hadoop在Windows上的实用工具,它提供了与Hadoop生态系统交互的命令行工具,比如设置HDFS的权限、管理Hadoop守护进程等。在Linux环境下,相应的功能由`hadoop`命令行工具提供,但在Windows上...
5. 启动Hadoop守护进程,包括DataNode、NameNode、ResourceManager等。 6. 测试Hadoop安装,例如通过`hadoop fs -ls /`命令检查HDFS是否正常工作。 在Windows上使用Hadoop还需要注意: 1. 设置HADOOP_HOME环境变量...
当在Windows上运行Hadoop时,这个文件是必不可少的,因为它允许Java应用程序(如Hadoop的守护进程)与操作系统进行交互。 2. **Winutils.exe**:这是Hadoop在Windows上的一个实用工具,类似于在Linux中的各种HDFS和...