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

简介: <div style="font-family:'lucida Grande',Verdana,'Microsoft YaHei'; font-size:14px; line-height:23.8px"> <h1 style="font-size:22px; font-weight:normal; margin:0px 0px 10px; padding:0px; font-famil

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


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

在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检查已经正常。

重启操作系统测试,也正常,问题解决。
目录
相关文章
|
5月前
|
存储 分布式计算 Hadoop
aws s3常用命令、hdfs dfs/hadoop fs常用命令
aws s3常用命令、hdfs dfs/hadoop fs常用命令
396 0
|
分布式计算 Hadoop
hadoop 的启动和停止命令(史上最全)
sbin/start-all.sh 启动所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager sbin/stop-all.sh 停止所有的Hadoop守护进程。包括NameNode、 Secondary NameNode、DataNode、ResourceManager、NodeManager sbin/start-dfs.sh 启动Hadoop HDFS守护进程NameNode、SecondaryNameNode、DataNode sbin/stop-dfs.sh 停止Hadoop
|
5天前
|
分布式计算 资源调度 Hadoop
Hadoop【基础知识 03+04】【Hadoop集群资源管理器yarn】(图片来源于网络)(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第5天】Hadoop【基础知识 03】【Hadoop集群资源管理器yarn】(图片来源于网络)Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
31 9
|
6天前
|
分布式计算 Hadoop Shell
Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
【4月更文挑战第4天】Hadoop【基础知识 04】【HDFS常用shell命令】(hadoop fs + hadoop dfs + hdfs dfs 使用举例)
18 5
|
3月前
|
存储 分布式计算 Hadoop
Hadoop的Secondary NameNode在HDFS中的作用是什么?
Hadoop的Secondary NameNode在HDFS中的作用是什么?
36 0
|
存储 分布式计算 资源调度
Hadoop运行模式(三)、群起集群、配置workers、启动集群、启动HDFS、拼接、Web端查看HDFS的NameNode、Web端查看YARN的ResourceManager
Hadoop运行模式(三)、群起集群、配置workers、启动集群、启动HDFS、拼接、Web端查看HDFS的NameNode、Web端查看YARN的ResourceManager
Hadoop运行模式(三)、群起集群、配置workers、启动集群、启动HDFS、拼接、Web端查看HDFS的NameNode、Web端查看YARN的ResourceManager
|
6月前
|
分布式计算 Hadoop
【hadoop】解决Datanode denied communication with namenode because hostname cannot be resolved
【hadoop】解决Datanode denied communication with namenode because hostname cannot be resolved
122 0
|
8月前
|
机器学习/深度学习 缓存 分布式计算
Hadoop基础学习---4、HDFS写、读数据流程、NameNode和SecondaryNameNode、DataNode
Hadoop基础学习---4、HDFS写、读数据流程、NameNode和SecondaryNameNode、DataNode
|
9月前
|
分布式计算 Hadoop
hadoop 的 namenode 宕机,怎么解决?
hadoop 的 namenode 宕机,怎么解决?
207 0
|
9月前
|
存储 域名解析 分布式计算
【hadoop】解决:Datanode denied communication with namenode because hostname cannot be resolve
【hadoop】解决:Datanode denied communication with namenode because hostname cannot be resolve
125 0

相关实验场景

更多