解决hadoop重启时,hdfs停止不了,no namenode to stop问题

自己的集群启动挺长时间,有天改了文件,需要重启,在主目录下停止hdfs发现报错,no namenode to stop.再jps一下,果然没停掉.
no namenode to stop
网上查找原因,发现是hadoop启动时会生成namenode/datanode/zkfc/journalnode等的pid文件,而hadoop的pid文件是默认保存在/tmp目录下的,Linux系统默认会定时去清理这个目录下的文件.所以是没有pid文件而导致进程无法结束.
解决办法.一个是直接手动kill掉hadoop的进程.
第二个,永久解决,修改hadoop的hadoop-env.sh配置文件,修改HADOOP_PID_DIR的路径.

export HADOOP_PID_DIR=/home/office/hadoop-2.6.0-cdh5.14.0/pids

修改之后就可以了.

在停止yarn的时候也发生了同样的问题. no resourcemanager tostop/no nodemanager to stop.查看yarn-daemon.sh脚本,在脚本注释部分发现很关键的一句话
YARN_PID_DIR The pid files are stored. /tmp by default.
继续往下看,看到这段代码

if [ "$YARN_PID_DIR" = "" ]; then
  YARN_PID_DIR=/tmp
fi

瞬间顿悟了,跟hdfs一样,yarn也有pid文件,而且pid文件默认是在/tmp文件夹下面.
解决办法还是和hdfs一样.先kill掉yarn的进程.再修改YARN_PID_DIR的路径.YARN_PID_DIR=/home/office/hadoop-2.6.0-cdh5.14.0/pids

再来,停止jobhistoryserver.停止的时候果然报错了no historyserver to stop.
此时我的内心波澜不惊,甚至隐隐还有点期待,查看mr-jobhistory-daemon.sh脚本.果然,相同的配方,相同的味道.注释脚本里面有一段代码
# HADOOP_MAPRED_PID_DIR The pid files are stored. /tmp by default.
再往下走,相同的味道

if [ "$HADOOP_MAPRED_PID_DIR" = "" ]; then
  HADOOP_MAPRED_PID_DIR=/tmp
fi

解决办法还是一样,先kill掉jobhistoryserver进程,再修改mr-jobhistory-daemon.sh脚本的HADOOP_MAPRED_PID_DIR目录.HADOOP_MAPRED_PID_DIR=/home/office/hadoop-2.6.0-cdh5.14.0/pids
完活.

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值