hadoop进程pid文件问题

来源:互联网 发布:阿里云有哪些服务 编辑:程序博客网 时间:2024/05/20 06:25
由于机器服务器维护需要,要求hadoop集群的一台服务器停止服务,于是我就到那台服务器去停止hadoop的datanode和tasktracker,运行以下命令:
bin/hadoop-daemon.sh stop datanode
竟然输出:
no datanode to stop
但是查看进程,却发现datanode和tasktracker都还在运行,尝试了好几次都是同样结果,最后我试图使用namenode的命令停止:
bin/stop_dfs.sh
还是输出:
no datanode to stop
不得已,只好使用暴力手段,直接kill -9 进程了。
在杀死hadoop进程之后,bin/hadoop-daemon.sh又可以正常使用了。不知道其他的hadoop使用者是否遇到过此问题??

但是问题不能就这么算了,在网上查了下资料,没找到满意的结果。没办法,自己看代码吧!
在看了hadoop-daemon.sh代码后,我发现脚本是通过pid文件来停止hadoop服务的,而我的集群配置是使用的默认配置,pid文件位于/tmp目录下,于是我对比了/tmp目录下hadoop pid文件中的进程id和ps ax查出来的进程id,发现两个进程id不一致,终于找到了问题的根源。
呵呵,赶紧去更新hadoop的配置吧!
修改hadoop-env.sh中的:HADOOP_PID_DIR = hadoop安装路径
然后根据集群hadoop进程的pid在hadoop安装路径下建立相应的pid文件:
hadoop-hadoop运行用户名-datanode.pid
hadoop-hadoop运行用户名-tasktracker.pid
hadoop-hadoop运行用户名-namenode.pid
hadoop-hadoop运行用户名-jobtracker.pid
hadoop-hadoop运行用户名-secondarynamenode.pid
原创粉丝点击