Hadoop的datanode,namenode無法啟動


   1、讀寫權限出錯

    首先jps檢查過后只有datanode沒有啟動,然后去Hadoop安裝目錄下的logs文件中找最近一次datanode的日志

    (網上有很多種故障,建議最好自己先看看日志自己的故障是不是和別人是一樣的,然后在進行排錯):

 org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir:

Incorrect permission for /home/hadoop/HadoopPseudoDistributTest/tmpdir/hdfs/data, expected: rwxr-xr-x, while actual: rwxrwxrwx

我的是讀寫權限出錯,用下面的命令修改

chmod 755 /home/hadoop/HadoopPseudoDistributTest/tmpdir/hdfs/data

附上文件修改權限講解:

Linux系統下如何查看及修改文件讀寫權限 - huiy - 博客園
http://www.cnblogs.com/CgenJ/archive/2011/07/28/2119454.html

 

2、datanode的ID出現問題

    之前自己IP(ifconfig查看)出錯時導致namenode啟動不起來,自己沒發現,看到網上說要

  格式化namenode: bin/hadoop namenode -format

 在調用幾次后,發現datanode就啟動不起來了,(datanode在迅速開始后關閉有時也是這個原因)后來從網上查到原因如下:

 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException:

 Incompatible namespaceIDs in /home/gqy/hadoop/data: namenode namespaceID = 1234444; datanode namespaceID = 23453466

       在執行文件系統格式化時,會在namenode數據文件夾(即配置文件中dfs.name.dir在本地系統的路徑)中保存一個current/VERSION文件,

  記錄namespaceID,標識了所格式化的 namenode的版本。如果頻繁地格式化namenode,那么datanode中保存(即配置文件中dfs.data.dir在本地系統的路徑)

   的current/VERSION文件只是你第一次格式化時保存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。

      解決辦法: 把配置文件中dfs.data.dir在本地系統的路徑下的current/VERSION中的namespaceID(即datanode namespaceID = 23453466)改為與

      namenode namespaceID = 1234444(從日志里找)一樣。

3、namenode進程端口號被別的程序占用了

   也有可能是我有時沒有直接stop-all.sh,直接關的:    

         命令:netstat -tunlp | grep java       查看有哪些端口被占(過濾java進程占用)

     然后用kill 進程號,重新:bin/start-all.sh,jps查看正常運行

 

  

 

 


免責聲明!

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



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