bin/stop-all.sh无法停止服务

用stop-all.sh无法停止hadoop了,用jps看当前的进程,kill掉hadoop相关的进程即可。网上还有一种方法:

http://blog.csdn.net/gavinming/article/details/4367711

在网上搜索了一圈,得知了问题所在:stop-all.sh会调用stop-mapred.sh和 stop-dfs.sh去停止jobtracker, tasktrackers; namenode, datanodes。Jobtracker和namenode的停止是在本地通过调用hadoop-daemon完成的,而tasktracker,和datanode 的停止是通过调用hadoop-daemons来完成的。Hadoop-daemon实质上是ssh到每一个slave去执行一个当地的hadoop- daemon命令,比如:hadoop-daemon stop datanoade。Hadoop-daemon stop command会通过kill -0 `cat command.pid` 来测试进程是否存在,如果这个测试中有错误产生,就会报”no command to stop ”。

     可能原因: pid 文件丢了,导致 hadoop-daemon.sh stop XXX 时找不到进程号。 
     解决办法:默认 pid 文件放在 /tmp 目录下,不太安全。可以在 conf/hadoop-env.sh 里设置 HADOOP_PID_DIR 环境变量改变 pid 文件的存放目录。 
     所以配置的时候最好添加一个固定的目录存储hadoop的PID。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值