博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hadoop Namenode不能启动 dfs/name is in an inconsistent
阅读量:5877 次
发布时间:2019-06-19

本文共 5050 字,大约阅读时间需要 16 分钟。

Hadoop Namenode不能启动 dfs/name is in an inconsistent

前段时间自己的本机上搭的环境(按文档的伪分布式),第一天还一切正常,后来发现每次重新开机以后都不能正常启动,

在start-dfs.sh之后jps一下发现namenode不能正常启动,按提示找到logs目录下namenode的启动log发现如下异常

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tmp/hadoop-javoft/dfs/name is in an inconsistent state: storage di rectory does not exist or is not accessible. 
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:291) 
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97) 
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379) 
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162) 
2011-07-23 12:48:43,125 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException :  Directory /tmp/hadoop-javoft/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible. 
at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:291) 
at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:97) 
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:379) 
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:353) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:254) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:434) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1153) 
at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1162)

2011-07-23 12:48:43,126 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: SHUTDOWN_MSG: 

Directory does not exist?但是为什么刚装完时是存在的呢,抱着试试看的态度,再次执行。

hadoop namenode -format

执行之后再启动,namenode启动成功了,说明上面does not exist的目录在format namenode的时候重新建起来了,但是如果每次重启都要format namenode,也太不靠谱了,不止是麻烦,更大的麻烦是里面的数据不能总被无情的delete掉啊,问题必须解决。

Directory /tmp/hadoop-javoft/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.这 里的目录既然是在tmp下面的,回忆一下,tmp目录下的文件是临时文件会被定期删除的,貌似bug已经露出水面。那就重启计算机试试是不是因为这,重启 之前检查一下tmp目录下面确定几个format namenode之后应该有的目录都有的,重启之后,发现全部被删掉。在执行一次 start-dfs.sh,看到tmp目录下面建了一些目录,但是dfs/name目录仍然不存在,在start-dfs.sh时候建了一部分目录和文 件。而dfs/name需要在hadoop namenode -format时建立。问题清楚了。

解决方案就很简单,这些目录的位置都是根据hadoop.tmp.dir的位置确定的,所以只需要在conf/core-site.xml覆盖hadoop.tmp.dir的默认值即可:

...
<property>
   <name>hadoop.tmp.dir</name>
   <value>/home/javoft/Documents/hadoop/hadoop-${user.name}</value>
   <description>A base for other temporary directories.</description>
</property>
...

如此问题解决。。。

1、问题描述:
第三周课程中,测试web管理界面,发现连接不上。
用 jps命令检查管理节点发现 namenode没有启动
只有3个进程
7160 JobTracker
7097 SecondaryNameNode
7310 Jps
关闭重启:
stop-all.sh
start-all.sh
问题依旧。
现象总结:第一次执行正常,操作系统重启后namenode无法启动。
2、查找原因
1)查找日志(日志: /hadoop/hadoop-0.20.2/logs):
发现有如下记录:
NodeMetrics: Initializing NameNodeMeterics using context objectrg.apache.hadoo
p.metrics.spi.NullContext
2013-03-05 20:38:06,038 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem
: fsOwner=hadoop,hadoop
2013-03-05 20:38:06,038 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem
: supergroup=supergroup
2013-03-05 20:38:06,038 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem
: isPermissionEnabled=true
2013-03-05 20:38:06,062 INFO org.apache.hadoop.hdfs.server.namenode.metrics.FSNa
mesystemMetrics: Initializing FSNamesystemMetrics using context objectrg.apach
e.hadoop.metrics.spi.NullContext
2013-03-05 20:38:06,063 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem
: Registered FSNamesystemStatusMBean
2013-03-05 20:38:06,187 INFO org.apache.hadoop.hdfs.server.common.Storage: Stora
ge directory /tmp/hadoop-hadoop/dfs/name does not exist.
2013-03-05 20:38:06,189 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesyste
m: FSNamesystem initialization failed.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /tm
p/hadoop-hadoop/dfs/name is in an inconsistent state: storage directory does not
exist or is not accessible.
        at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(
FSImage.java:290)
        at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDire
ctory.java:87)
2)检查/tmp目录发现确实没有hadoop-hadpp目录
3、问题解决:
现在问题比较明确了,是临时目录不存在导致。
/tmp/hadoop-hadoop/dfs/name是一个临时的文件夹,系统每次重启时都会进行删除,在配置文件中进行修改就可。
conf/core-site.xml
<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/javoft/Documents/hadoop/hadoop-${user.name}</value>
    <description>A base for other temporary directories.</description>
</property>
注意:<value>的值根据自己的情况调整。(需要提前准备好,mkdir /hadoop/tmp)
重新格式化
stop-all.sh
(数据节点上的data目录也要重建)
bin/hadoop namenode -format
start-all.sh
jps检查已经正常。
重启操作系统测试,也正常,问题解决。

转载地址:http://bnuix.baihongyu.com/

你可能感兴趣的文章
Ubuntu 设置当前用户sudo免密码
查看>>
设置tomcat远程debug
查看>>
android 电池(一):锂电池基本原理篇【转】
查看>>
Total Command 常用快捷键
查看>>
ionic 调用手机的打电话功能
查看>>
怎么使用阿里云直播服务应用到现在主流直播平台中
查看>>
Xcode全局替换内容,一键Replace
查看>>
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>