启动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 ...
随机推荐
- oracle数据库的迁移(从一台服务器到另一个台服务器,从oracle 10g到oracle 11g)
这个过程呢,还是蛮艰难的.... 一.最初我使用的是Navicat中的数据传输来迁移的,虽说整个数据库的迁移没有成功,但传输指定的对象时还是传输成功了.所以还是记录一下吧. 1.前提连接好数据库.在指 ...
- Magic Powder - 2 (CF 670_D)
http://codeforces.com/problemset/problem/670/D2 The term of this problem is the same as the previous ...
- bootstrap阶段测验【答案】
<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...
- centos下添加epel源
RHEL以及他的衍生发行版如CentOS.Scientific Linux为了稳定,官方的rpm repository提供的rpm包往往是很滞后的,当然了,这样做这是无可厚非的,毕竟这是服务器版本,安 ...
- Elasticsearch 系列2 --- 安装elasticsearch-head管理工具
elasticsearch-head是elasticsearch的一个管理页面,它的官网是https://github.com/mobz/elasticsearch-head 通过官网我们得知,ES5 ...
- 批量拼脚本神器-NimbleText
工作中要给产品经理写各种脚本拉数据.修改数据.这种批量拼sql,Excel当然是最合适的.但是苦于Excel玩不转,之前一直用Visual Studio Code的多焦点编辑功能,即便如此,这在同事眼 ...
- ASP.NET SignalR Troubeshooting
method could not be resolved 场景: Javascript客户端不生成代理,调用服务端方法. 按照官网文档的用法: contosoChatHubProxy.invoke(' ...
- DevExpress中获取GridControl排序之后的List
public System.Collections.IList GetGridViewFilteredAndSortedData(DevExpress.XtraGrid.Views.Grid.Grid ...
- 在Windows7系统上能正常使用的程序,Windows10运行后部分状态不能及时变更
这是最近在开发一个通信项目时遇到的问题,一开始以为是窗体样式的原因,把窗体换成系统窗体之后还是在Win10上不能正常使用,后面突然想到会不会是匹配原因,试了一下,结果真的就正常了. 问题:例如一个通信 ...
- 关于.net core使用nginx做反向代理获取客户端ip的问题
1.正常情况下.net core获取客户端ip是比较简单的 /// <summary> /// 获取客户Ip /// </summary> /// <param name ...
