在運行 Hadoop 的時候,報了下面這個錯誤:
20/06/29 13:12:57 ERROR namenode.NameNode: Failed to start namenode. org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory ......... is in an inconsistent state: storage directory does not exist or is not accessible. at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:382) at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:233) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:984) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:686) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:586) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:646) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:820) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:804) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1516) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1582)
看到 Directory 這個提示知道是由於本地沒有配置好 Hadoop 數據的存放位置,我們在 hdfs-site.xml 里配置下 dir 的位置就好了。
<!-- NameNode 存放的位置 -->
<property> <name>dfs.namenode.name.dir</name> <value>file:///hadoop/data/dfs/nn</value> </property>
<!-- DataNode 存放的位置 --> <property> <name>dfs.datanode.data.dir</name> <value>file:///hadoop/data/dfs/dn</value> </property>
重新運行下 Hadoop 程序就可以了。
20/06/29 13:12:57 ERROR namenode.NameNode: Failed to start namenode.org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory D:\tmp\hadoop-888\dfs\name is in an inconsistent state: storage directory does not exist or is not accessible. at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverStorageDirs(FSImage.java:382) at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:233) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:984) at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:686) at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:586) at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:646) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:820) at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:804) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1516) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1582)