启动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一直处于安全模式(造成启动Hive的时候失败,不能向HDFS上写数据),正常情况下是在启动的前30秒处于安全模式,之后就退出了.
可以采取强制退出安全模式的方式;
安全模式的相关命令:
获取安全模式的状态: hdfs dfsadmin -safemode get 安全模式打开 hdfs dfsadmin -safemode enter 安全模式关闭 hdfs dfsadmin -safemode leave
二.调查
查看HDFS启动的日志,到HDFS配置的日志对应的目录去查看日志信息:
查看crxy99 NameNode对应的日志信息 关于安全模式的报错信息如下:
2017-08-29 00:30:52,201 DEBUG org.apache.hadoop.ipc.Server: Served: rollEditLog queueTime= 6 procesingTime= 0 exception= SafeModeException
2017-08-29 00:30:52,202 DEBUG org.apache.hadoop.security.UserGroupInformation: PrivilegedActionException as:root (auth:SIMPLE) cause:org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled. Name node is in safe mode.
The reported blocks 7259 needs additional 83 blocks to reach the threshold 0.9990 of total blocks 7349.
The number of live datanodes 2 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached.
2017-08-29 00:30:52,202 INFO org.apache.hadoop.ipc.Server: IPC Server handler 3 on 9000, call org.apache.hadoop.hdfs.server.protocol.NamenodeProtocol.rollEditLog from 192.168.43.97:54228 Call#1 Retry#0: org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled. Name node is in safe mode.
The reported blocks 7259 needs additional 83 blocks to reach the threshold 0.9990 of total blocks 7349.
The number of live datanodes 2 has reached the minimum number 0. Safe mode will be turned off automatically once the thresholds have been reached.
关于 The reported blocks 7259 needs additional 83 blocks to reach the threshold 0.9990 of total blocks 7349. 大体意思是DataNode给NameNode汇报了7259个block块,但是还需要83个block块 才能达到总共所需要的7349个block块的0.99990.
一句话:就是缺少block块..... 关于这个错误和安全模式的介绍推荐看一个帖子:http://www.superwu.cn/2013/08/23/548/部分内容如下:
在hadoop集群的时候,集群的运行会进入到安全模式(safeMode)下。在安全模式下运行一段时间后,自动退出。
1.那么,系统在安全模式下干什么了?
当集群启动的时候,会首先进入到安全模式。系统在安全模式下,会检查数据块的完整性。假设我们设置的副本数(即参数dfs.replication)是5,那么在dataNode上就应该有5个副本存在,假设只存在3个副本,那么比率就是3/5=0.6。
在配置文件hdfs-default.xml中定义了一个最小的副本率,见图7-1
我们的副本率0.6明显小于0.999,因此系统会自动的复制副本到其他dataNode,争取是的最小副本率>=0.999。如果系统中有8个副本,超过我们设定的5个副本,那么系统也会删除多于的3个副本。
2.安全模式对我们有什么影响?
这时,不允许客户端进行任何修改文件的操作,包括上传文件、删除文件、重命名、创建文件夹等操作。比如,创建文件时,在源代码中就有对安全模式的判断,如图7-2
当我们在安全模式下进行修改文件操作时,会报出如下错误.
正常情况下,安全模式会运行一段时间自动退出的。只需要我们稍等一会就可以了。到底等多长时间哪,我们可以通过50070端口查看安全模式退出的剩余时间,如图7-4。
虽然不能进行修改文件的操作,但是可以浏览目录结构、查看文件内容的。
3.我们可以控制是否进入或者退出安全模式吗?
在命令行下是可以控制安全模式的进入、退出和查看的,
命令hadoop fs –safemode get 查看安全模式状态
命令hadoop fs –safemode enter 进入安全模式状态
命令hadoop fs –safemode leave 离开安全模式状态
安全模式,是hadoop集群的一种保护机制,在启动时,最好是等待集群自动退出,然后再进行文件操作。
为什么会少block块呢?
猜测某个DataNode节点没有正常启动,于是jps查看各个节点启动的进程.发现crxy97没有启动,没有DataNode进程. 为什么crxy97没有启动DataNode进程呢?
①先单独尝试启动这个DataNode节点:
hadoop-daemon.sh start datanode crxy97
再在crxy97上查看仍然没有启动DataNode进程.
②去crxy97上的日志中去查看
2017-08-31 08:13:37,890 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in secureMain
java.net.BindException: Problem binding to [0.0.0.0:50010] java.net.BindException: Address already in use; For more details see: http://wiki.apache.org/hadoop/B indException
原因是50010端口被占用了.
③为什么50010端口被占用了,哪个进程占用了?
解决方法: 可以将占用此端口的程序杀掉或是更改hdfs-site.xml中的<name>dfs.datanode.address</name><value>0.0.0.0:50010</value>
杀掉进程释放端口方法:
1、netstat -tln | grep 50010,查看这个端口使用情况;
2、lsof -i:50010,显示是哪个程序占用此端口
3、kill -9 进程的PID,杀掉这个进程,重启节点服务即可。
经调查发现我crxy97可能是是因为之前安装过CM,创建了一个hdfs用户,只要crxy97机器一启动,就会使用hdfs用户启动一个程序占用50010端口.我采取的方法是去/etc/passwd中删除hdfs用户对应的信息.
然后使用 " userdel hdfs " 这样重新启动crxy97之后 也没有程序占用50010端口, HDFS正常启动之后不再处于一直处于安全模式,问题解决.
启动HDFS之后一直处于安全模式org.apache.hadoop.hdfs.server.namenode.SafeModeException: Log not rolled. Name node is in safe mode.的更多相关文章
- Datanode启动问题 FATAL org.apache.hadoop.hdfs.server.datanode.DataNode: Initialization failed for Block pool <registering>
-- ::, INFO org.apache.hadoop.hdfs.server.datanode.DataNode: supergroup = supergroup -- ::, INFO org ...
- Hive:org.apache.hadoop.hdfs.protocol.NSQuotaExceededException: The NameSpace quota (directories and files) of directory /mydir is exceeded: quota=100000 file count=100001
集群中遇到了文件个数超出限制的错误: 0)昨天晚上spark 任务突然抛出了异常:org.apache.hadoop.hdfs.protocol.NSQuotaExceededException: T ...
- HADOOP HA 踩坑 - org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal Storage Directory /mnt/data1/hadoop/dfs/journal/hdfscluster not formatted
报错:在journalnode的log中: org.apache.hadoop.hdfs.qjournal.protocol.JournalNotFormattedException: Journal ...
- HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException)
HDFS超租约异常总结(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException) 转载 2014年02月22日 14:40:58 96 ...
- ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: Incompatible namespaceIDs
用三台centos操作系统的机器搭建了一个hadoop的分布式集群.启动服务后失败,查看datanode的日志,提示错误:ERROR org.apache.hadoop.hdfs.server.dat ...
- Hadoop程序运行中的Error(1)-Error: org.apache.hadoop.hdfs.BlockMissingException
15/03/18 09:59:21 INFO mapreduce.Job: Task Id : attempt_1426641074924_0002_m_000000_2, Status : FAIL ...
- org.apache.hadoop.hdfs.server.namenode.SafeModeException: Cannot create directory /user/hive/warehouse/page_view. Name node is in safe mode
FAILED: Error in metadata: MetaException(message:Got exception: org.apache.hadoop.ipc.RemoteExceptio ...
- hadoop错误FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOException There appears to be a gap in the edit log
错误: FATAL org.apache.hadoop.hdfs.server.namenode.NameNode Exception in namenode join java.io.IOExcep ...
- org.apache.hadoop.hdfs.server.datanode.DataNode: Exception in receiveBlock for block
Hbase依赖的datanode日志中如果出现如下报错信息:DataXceiverjava.io.EOFException: INFO org.apache.hadoop.hdfs.server.da ...
随机推荐
- 下载编译安装Apache HTTP Server 2.4.23以及配置HTTP/HTTPS反向代理
http://blog.csdn.net/gangchengzhong/article/details/52910225 [注意,在编译make时出现的错误并不是文章中说的openssl的版本问题,而 ...
- 根据方法名获取方法Body Content
利用 MethodBody类的GetILAsByteArray方法可以获取到返回字节数组的MSIL的body.然后再去解析此字节数组, 可以得到MSIL,然后你再去解析MSIL,你就可以得到你想到so ...
- springboot工程读取配置文件application.yml的写法18045
现在流行springboot框架的项目,里面的默认配置文件为application.yml,我们怎样读取这个配置文件呢? 先贴上我得配置文件吧 目录结构 里面内容 1 写读取配置文件的工具类 @Con ...
- ssh+注解开发 pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- How to Start a Business in 10 Days
With an executive staffing venture about to open, a business loan from the in-laws gnawing at her co ...
- set_error_handler
set_error_handler这个函数的作用是为了防止错误路径泄露 何为错误路径泄露呢? 我们写程序,难免会有问题,而PHP遇到错误时,就会给出出错脚本的位置.行数和原因 有很多人说,这并没有什么 ...
- hdu 5089 使做对k-1题最大概率的选题方案
http://acm.hdu.edu.cn/showproblem.php?pid=5089 给出N道难度递增的题目,难度用可能做出的百分比表示,选出K道题目使得做出K-1道题目的概率最大. 选k题的 ...
- hdu 4939 三色塔防
http://acm.hdu.edu.cn/showproblem.php?pid=4939 给出一条长为n个单位长度的直线,每通过一个单位长度需要 t 秒. 有3种塔,红塔可以在当前格子每秒造成 x ...
- panda
这个项目很有意思,麻雀虽小五脏俱全. 页面使用rem和media query来设置字体和元素宽高image居中需要用到position 后端mysql使用阿里云的rds:nodejs的mysql模块的 ...
- shell 命令之 crontab
crontab是shell命令中的定时任务: crontab -e 进入当前定时任务的vim页面 每行是一个独立的定时脚本,使用和vim的语法部署定时任务 如下图: 脚本执行周期设置 可以用下面的网页 ...