记一次关闭Hadoop时no namenode to stop异常
记一次关闭Hadoop时no namenode to stop异常
在自己的虚拟机环境上跑着hadoop集群,一直正常运行着,不用的时候直接挂起虚拟机,今天需要做些调整,但是发现集群突然无法正常关闭了。遂祭出百度大法~:
大家都知道,关闭集群的命令是stop-dfs.sh和stop-yarn.sh,然鹅我执行完具体情况是这样的:
[simon@master ~]# stop-dfs.sh
Stopping namenodes on [master]
master: no namenode to stop
slave2: no datanode to stop
slave1: no datanode to stop
...
啊啊啊...这都是啥...俺有些不懂...
可以正常启动却不能停止?kiding me ?
执行jps命令,发现namenode,datanode等进程都正常运行着。纳了闷!
最终参考大佬们的博客之后, 开始阅读hadoop-daemon.sh脚本文件,然后找出问题了问题的原因。
1、首先确定,报错代码出现的位置:
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 $HADOOP_STOP_TIMEOUT
if kill -0 $TARGET_PID > /dev/null 2>&1; then
echo "$command did not stop gracefully after $HADOOP_STOP_TIMEOUT seconds: killing with kill -9"
kill -9 $TARGET_PID
fi
else
echo no $command to stop
fi
rm -f $pid
else
echo no $command to stop
fi
没错了,报错代码就是后边几行
....省略
else
echo no $command to stop
fi
现在原因很明显,如果找不到pid文件,在停止集群的时候就会报出这个错误。那么什么是pid文件呢?为什么找不到呢?
2、经过查阅资料发现,在脚本中有这么一行代码
#第107行
pid=$HADOOP_PID_DIR/hadoop-$HADOOP_IDENT_STRING-$command.pid
这里可以看出,
HADOOP_PID_DIR变量指定了hadoop的pid文件的存放目录。那么这个pid文件是啥呢。Hadoop启动后,会把进程的PID号存储在一个文件中,这样执行stop-dfs脚本时就可以按照进程PID去关闭进程了。
找到
HADOOP_PID_DIR默认的路径 :if [ "$HADOOP_PID_DIR" = "" ]; then #97~99行
HADOOP_PID_DIR=/tmp
fi
ok, 明白了,存放集群pid文件的目录就是系统的
/tmp目录,而这个目录下的文件系统会定期清理的。我这个集群自从搭建起来,一直运行着,pid文件也早就被清空了。所以我们给它换个指定目录,可以自己定义。我就把它设为了/home/tmp/pid。
3.着手设置
既然stop命令无法使用,那我们只能手动关闭了,jps查看你的namenode\datanode等进程的PID,然后用kill -9干掉即可。
if [ "$HADOOP_PID_DIR" = "" ]; then #97~99行
HADOOP_PID_DIR=/home/tmp/pid # 创建这个文件夹用于存放pid文件
fi
大功告成,重启集群即可~
记一次关闭Hadoop时no namenode to stop异常的更多相关文章
- Hadoop执行bin/stop-all.sh时no namenode to stop异常
1 先关闭hadoop所有服务 命令: bin/stop-all.sh 2 格式化namenode 命令: bin/hadoop namenode -format 3 重新启动所有服务 命令: bin ...
- Hadoop JobTracker和NameNode运行时参数查看
1)JobTracker运行时参数: hadoop@ubuntu:/home/zhangchao3$ ps -ef | grep job hadoop 29563 1 0 11:34 pts/12 ...
- 启动HDFS之后一直处于安全模式org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled. Name node is in safe mode.
一.现象 三台机器 crxy99,crxy98,crxy97(crxy99是NameNode+DataNode,crxy98和crxy97是DataNode) 按正常命令启动HDFS之后,HDFS一直 ...
- Hadoop错误之namenode宕机的数据恢复
情景再现: 在修复hadoop集群某一个datanode无法启动的问题时,搜到有一个答案说要删除hdfs-site.xml中dfs.data.dir属性所配置的目录,再重新单独启动该datanode即 ...
- 【Hadoop】Seondary NameNode不是备份NameNode!!
昨天和舍友聊天时无意中提起Secondary NameNode,他说这是备用NameNode.我当时就有点疑惑..之后查阅了相关资料和博客,算是基本理解了什么是Secondary NameNode. ...
- Hadoop 2.0 NameNode HA和Federation实践【转】
Hadoop 2.0 NameNode HA和Federation实践 Posted on 2012/12/10 一.背景 天云趋势在2012年下半年开始为某大型国有银行的历史交易数据备份及查询提供基 ...
- HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException)
HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException) 转载 2014年02月22日 14:40:58 96 ...
- hadoop 根据secondary namenode恢复namenode
refer to http://www.cnblogs.com/Richardzhu/p/3435989.html http://blog.csdn.net/wuzhilon88/article/de ...
- hadoop格式化:java.io.IOException: Incompatible clusterIDs in /home/lxh/hadoop/hdfs/data: namenode clusterID
1 概述 解决hadoop启动hdfs时,datanode无法启动的问题.错误为: java.io.IOException: Incompatible clusterIDs in /home/lxh ...
随机推荐
- 微信小程序丨将溢出的文本用省略号代替的方法
下面进入正题,有关于将溢出的文本用省略号代替的方法,不知道什么原因,我的程序用传统的代码无法解决: .text{ white-space: nowrap; overflow: hidden; text ...
- Statement.setQueryTimeout(seconds)在家中环境的再次试验 证明此语句还是有效的
对比实验:https://www.cnblogs.com/xiandedanteng/p/11955887.html 这次实验的环境是T440p上安装的Windows版Oracle11g,版本为: O ...
- Python监控rabbitmq的代码
author:headsen chen date: 2019-07-26 17:22:24 notice: 个人原创 import requests, json, time, datetime fr ...
- leetcode 874. Walking Robot Simulation
874. Walking Robot Simulation https://www.cnblogs.com/grandyang/p/10800993.html 每走一步(不是没走commands里的一 ...
- openresty开发系列4--nginx的配置文件说明
openresty开发系列4--nginx的配置文件说明 Nginx基本配置 Nginx的主配置文件是:nginx.conf,nginx.conf主要组成如下: # 全局区 有一个工作子进程,一般 ...
- ISO/IEC 9899:2011 条款6.7.2——类型说明符
6.7.2 类型说明符 语法 1.type-specifier: void char short int long float double signed unsigned _Bool _Comple ...
- 多重if结构
package com.imooc; import java.util.Scanner; public class TypeExchange { public static void main(Str ...
- hppts的理解
参考: https://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
- Flink assignAscendingTimestamps 生成水印的三个重载方法
先简单介绍一下Timestamp 和Watermark 的概念: 1. Timestamp和Watermark都是基于事件的时间字段生成的 2. Timestamp和Watermark是两个不同的东西 ...
- Flink MysqlSink 简单样例
在大数据领域中,有很多nosql 的数据库,典型的 hbase,可以实现大数据量下的快速查询,但是关系型数据的地位还是没办法替代.比如上个项目中,计算完的结果数据,还是会输出到关系型数据库当中.Fli ...