Hadoop Namenode不能啟動


 

   自己在虛擬機上建立偽分布環境,第一天還一切正常,后來發現每次重新開機以后都不能正常啟動,在start-dfs.sh之后jps一下發現namenode不能正常啟動,按提示找到logs目錄下namenode的啟動log發現如下異常。

hadoop@cgy-VirtualBox:~$ jps
5096 ResourceManager
5227 NodeManager
5559 Jps
4742 DataNode
4922 SecondaryNameNode
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /usr/local/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.recoverStorageDirs(FSImage.java:313)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1020)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:739)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:536)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:595)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:762)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:746)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1438)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)
2014-12-27 21:48:50,921 INFO org.mortbay.log: Stopped HttpServer2$SelectChannelConnectorWithSafeStartup@0.0.0.0:50070
2014-12-27 21:48:50,927 WARN org.apache.hadoop.http.HttpServer2: HttpServer Acceptor: isRunning is false. Rechecking.
2014-12-27 21:48:50,927 WARN org.apache.hadoop.http.HttpServer2: HttpServer Acceptor: isRunning is false
2014-12-27 21:48:50,927 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: Stopping NameNode metrics system...
2014-12-27 21:48:50,928 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system stopped.
2014-12-27 21:48:50,928 INFO org.apache.hadoop.metrics2.impl.MetricsSystemImpl: NameNode metrics system shutdown complete.
2014-12-27 21:48:50,928 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Failed to start namenode.
org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /usr/local/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.recoverStorageDirs(FSImage.java:313)
    at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:202)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFSImage(FSNamesystem.java:1020)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.loadFromDisk(FSNamesystem.java:739)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.loadNamesystem(NameNode.java:536)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:595)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:762)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:746)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1438)
    at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)

 

    

Directory /usr/local/hadoop/hdfs/name

    此目錄下的文件是臨時文件會被定期刪除的,貌似bug已經露出水面。那就重啟計算機試試是不是因為這,重啟之前檢查一下tmp目錄下面確定幾個format namenode之后應該有的目錄都有的,重啟之后,發現全部被刪掉。在執行一次 start-dfs.sh,看到tmp目錄下面建了一些目錄,但是dfs/name目錄仍然不存在,在start-dfs.sh時候建了一部分目錄和文件。而dfs/name需要在hadoop namenode -format時建立。問題清楚了。

解決方案就很簡單,這些目錄的位置都是根據hadoop.tmp.dir的位置確定的,所以只需在hdfs-site.xml 配置 datanode 和 namenode 存儲目錄。

<property>
  <name>dfs.namenode.name.dir</name>
  <value>file:/usr/local/hadoop-2.0.2-alpha/dfs/name</value>
</property>
 
<property>
  <name>dfs.datanode.data.dir</name>
  <value>file:/usr/local/hadoop-2.0.2-alpha/dfs/data</value>
</property>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM