2014-12-03 163 views
10

我尝试了关于此主题的所有在计算器上提供的不同解决方案,但没有帮助 与特定日志和细节hadoop/hdfs/name处于不一致的状态:存储目录(hadoop/hdfs/data /)不存在或无法访问

任何帮助表示赞赏

我有一个主节点,并在我的Hadoop集群5个从属节点又要求。 Ubuntu的用户和Ubuntu组是~/Hadoop文件夹的所有者 无论是~/hadoop/hdfs/data & ~/hadoop/hdfs/name文件夹中存在

和权限都被设置为755

文件夹成功格式化名称节点启动脚本start-all.sh

脚本无法启动“NAMENODE”

这些在主节点上运行

[email protected]:~/hadoop/bin$ jps 

7067 TaskTracker 
6914 JobTracker 
7237 Jps 
6834 SecondaryNameNode 
6682 DataNode 

[email protected]:~/hadoop/bin$ jps 

31438 TaskTracker 
31581 Jps 
31307 DataNode 

下面是来自名称节点日志文件的日志。

.......... 
.......... 
......... 

014-12-03 12:25:45,460 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source jvm registered. 
2014-12-03 12:25:45,461 INFO org.apache.hadoop.metrics2.impl.MetricsSourceAdapter: MBean for source NameNode registered. 
2014-12-03 12:25:45,532 INFO org.apache.hadoop.hdfs.util.GSet: Computing capacity for map BlocksMap 
2014-12-03 12:25:45,532 INFO org.apache.hadoop.hdfs.util.GSet: VM type  = 64-bit 
2014-12-03 12:25:45,532 INFO org.apache.hadoop.hdfs.util.GSet: 2.0% max memory = 1013645312 
2014-12-03 12:25:45,532 INFO org.apache.hadoop.hdfs.util.GSet: capacity  = 2^21 = 2097152 entries 
2014-12-03 12:25:45,532 INFO org.apache.hadoop.hdfs.util.GSet: recommended=2097152, actual=2097152 
2014-12-03 12:25:45,588 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: fsOwner=ubuntu 
2014-12-03 12:25:45,588 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: supergroup=supergroup 
2014-12-03 12:25:45,588 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isPermissionEnabled=true 
2014-12-03 12:25:45,622 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: dfs.block.invalidate.limit=100 
2014-12-03 12:25:45,623 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s) 
2014-12-03 12:25:45,716 INFO org.apache.hadoop.hdfs.server.namenode.FSNamesystem: Registered FSNamesystemStateMBean and NameNodeMXBean 
2014-12-03 12:25:45,777 INFO org.apache.hadoop.hdfs.server.namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0 
2014-12-03 12:25:45,777 INFO org.apache.hadoop.hdfs.server.namenode.NameNode: Caching file names occuring more than 10 times 
2014-12-03 12:25:45,785 INFO org.apache.hadoop.hdfs.server.common.Storage: Storage directory /home/ubuntu/hadoop/file:/home/ubuntu/hadoop/hdfs/name does not exist 
2014-12-03 12:25:45,787 ERROR org.apache.hadoop.hdfs.server.namenode.FSNamesystem: FSNamesystem initialization failed. 
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /home/ubuntu/hadoop/file:/home/ubuntu/hadoop/hdfs/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:304) 
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:395) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:569) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488) 
2014-12-03 12:25:45,801 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /home/ubuntu/hadoop/file:/home/ubuntu/hadoop/hdfs/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:304) 
    at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:104) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:427) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:395) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:299) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:569) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1479) 
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1488) 

回答

8

删除了 “文件:” 从HDFS-site.xml文件

[WRONG HDFS-SITE.XML]

<property> 
    <name>dfs.namenode.name.dir</name> 
    <value>file:/home/hduser/mydata/hdfs/namenode</value> 
    </property> 
    <property> 
    <name>dfs.datanode.data.dir</name> 
    <value>file:/home/hduser/mydata/hdfs/datanode</value> 
    </property> 

[正确HDFS- SITE.XML]

<property> 
    <name>dfs.namenode.name.dir</name> 
    <value>/home/hduser/mydata/hdfs/namenode</value> 
    </property> 


    <property> 
    <name>dfs.datanode.data.dir</name> 
    <value>/home/hduser/mydata/hdfs/datanode</value> 
    </property> 

感谢Erik的帮助。

+2

我使用了过去2年以上的hdfs-site.xml,它对我来说工作正常。 – 2014-12-04 04:57:58

+0

感谢您的回答库马尔。这很有帮助。我从你的答案中删除了“file:”,并删除了错误。 – Tariq 2014-12-04 09:47:48

+1

当不在路径中使用'file:'时,'hdfs namenode -format'抱怨路径不正确。 – mahdix 2016-02-16 16:30:49

4

运行在终端

$ cd ~ 
$ mkdir -p mydata/hdfs/namenode 
$ mkdir -p mydata/hdfs/datanode 

给予许可这些命令都目录755

然后,

添加此属性中的conf/HDFS-site.xml中

<property> 
 <name>dfs.namenode.name.dir</name> 
 <value>file:/home/hduser/mydata/hdfs/namenode</value> 
</property> 


<property> 
 <name>dfs.datanode.data.dir</name> 
 <value>file:/home/hduser/mydata/hdfs/datanode</value> 
</property> 

如果不行的话

stop-all.sh 
start-all.sh 
+0

感谢您的回复。在日志中:org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:Directory/home/ubuntu/hadoop/file:/ home/ubuntu/hadoop/hdfs/name处于不一致状态:存储目录不存在或不可访问;我不认为/ home/ubuntu/hadoop/file:/ home/ubuntu/hadoop/hdfs/name是正确的。它只应该是file:/ home/ubuntu/hadoop/hdfs/name。你有什么想法从附加的位附加? – Tariq 2014-12-03 13:50:31

+0

尝试更新的答案 – 2014-12-03 14:01:31

+0

更改了XML标签。仍然是同样的问题....它寻找/ home/ubuntu/hadoop/hadoop-data/dfs /名称文件夹,而我的名字文件夹在/ home/ubuntu/hadoop/hdfs/name中。如何改变这个配置 – Tariq 2014-12-03 14:16:35

6

按照下面的步骤,

1.Stop所有服务

2.Format您的NameNode

3.删除你的数据节点目录

4。启动所有服务

+0

谢谢,我今天遇到了同样的问题。这固定了一切。 – Adama 2015-08-04 16:40:52

+2

数据节点目录在哪里? – blong 2015-10-27 21:18:26

2

1)名称节点目录,你应该是业主身份,并搭配chmod 750适当
2)停止所有服务
3)通过Hadoop的NameNode -format格式化namenode的
4)将它添加到HDFS现场.XML

<property> 
    <name>dfs.data.dir</name> 
    <value>path/to/hadooptmpfolder/dfs/name/data</value> 
    <final>true</final> 
    </property> 
    <property> 
    <name>dfs.name.dir</name> 
    <value>path/to/hadooptmpfolder/dfs/name</value> 
    <final>true</final> 
</property> 

5)运行hadoop namenode -format 在添加export PATH=$PATH:/usr/local/hadoop/bin/〜/ .bashrc中 无论Hadoop是解压补充一点,在路径

-1

有类似问题,我格式化namenode,然后启动它

Hadoop namenode -format 
hadoop-daemon.sh start namenode