Hadoop:Hadoop的常見啓動錯誤(有新問題會持續更新)

最近在學習hadoop,遇到了一些常見的問題,現在來總結一下,和大家分享,以後會持續更新遇見的其他問題。當使用hadoop 發現有問題時,首先使用jps 命令查看啓動的節點是否正確,然後再去查看日誌文件。

原創文章,轉載請註明出處:http://blog.csdn.net/jessonlv/article/details/18221299

通常情況下,我們會遇見一下幾種錯誤:

1、設置主機名錯誤

看日誌,會發現下面的錯誤:

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.UnknownHostException:
Invalid hostname for server: master

這是由於主機名設置錯誤造成的,請檢查配置文件中關於主機名的設置,是否正確。
首先使用hostname 命令查看主機名是否正確;
然後使用more /etc/sysconfig/network 命令查看主機名是否記錄在文件中;
最後使用more /etc/hosts 命令查看ip 與主機名的映射是否設置。

2、ip 設置錯誤

看日誌,發現下面的錯誤

ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.net.BindException: Problem
binding to book0/192.168.1.100:9000 : Cannot assign requested address

這是由於ip 地址設置錯誤引起的,請檢查主機的ip 設置與配置文件的ip 設置是否一致。
使用more /etc/hosts 命令查看ip 與主機名的映射是否設置。

3、hostname 不能帶有下劃線,不能數字開頭

hostname 含有下劃線,也會造成啓動失敗。

啓動完成後,一定使用jps 命令查看5 個節點是否全部成功啓動。如果哪個節點沒有啓
動,請查看對應的log 日誌。日誌的默認目錄是$HADOOP_HOME/logs。
以下是我的日誌截圖:


文件命名是有規律的,“hadoop-[當前用戶名]-[節點名稱]-[主機名].log”我們只查看log結尾的文件。如果是namenode 節點沒有啓動,查看hadoop-root-namenode-book0.log 文件。

4、多次執行hadoop 格式化

現象:在Hadoop-root-datanode-master.log 中有如下錯誤:

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


原因: 每次namenode format 會重新創建一個namenodeId,而dfs.data.dir 參數配置的目錄中包含的是上次format 創建的id,和dfs.name.dir 參數配置的目錄中的id 不一致。
namenode format 清空了namenode 下的數據,但是沒有清空datanode 下的數據,導致啓動時失敗,所要做的就是每次fotmat 前,清空dfs.data.dir 參數配置的目錄。重新格式化hdfs的命令。

5、防火牆沒有關閉

從本地往hdfs 文件系統上傳文件,出現如下錯誤:


這個問題最有可能就是防火牆沒有關閉,導致節點DataNode 與節點NameNode 通信失敗。可以使用service iptables status 命令關閉防火牆。這樣關閉後,重啓操作系統時,防火牆有可能重啓,可以關閉自動重啓功能。使用chkconfig iptables off 關閉。

6、安全模式導致的錯誤

錯誤提示如下:

org.apache.hadoop.dfs.SafeModeException: Cannot delete ..., Name node is in
safe mode

在分佈式文件系統啓動的時候,開始的時候會有安全模式,當分佈式文件系統處於安全模式的情況下,文件系統中的內容不允許修改也不允許刪除,直到安全模式結束。安全模式主要是爲了系統啓動的時候檢查各個DataNode 上數據塊的有效性,同時根據策略必要的複製或者刪除部分數據塊。運行期通過命令也可以進入安全模式。在實踐過程中,系統啓動的時候去修改和刪除文件也會有安全模式不允許修改的出錯提示,只需要等待一會兒即可。如果着急的話,可以執行hadoop dfsadmin –safemode leave 命令關閉安全模式。

總結:以上是幾天學習hadoop的時候,遇到的幾個問題,後面的學習過程中肯定會遇見各種各樣的問題,我會一一記下來,並找出解決方法,持續更新這篇文章。

另外,我會將學習過程和做的筆記和大家分享。

最後,最近發現很多論壇扒了我的文章,讓我很是苦惱,不知道廣大同學有什麼解決方法,幫忙支支招,謝謝大家啦~

2014/1/14更新:

今天在配置hadoop的配置文件的時候,犯了一個小小的疏忽,請看下面:

我在配置hadoop-env.sh 的時候,

這個文件的第九行的內容原來是:

#export JAVA_HOME=/usr/lib/jdk-1.6.0/
我們需要將此改爲我們自己的jdk目錄,我們的目錄是/use/local/jdk
我在修改的時候,只把前面的#號去掉後,只把jdk-1.6.0這個名稱改了,沒有把lib改爲local,在啓動hadoop的時候造成如下錯誤:


找不到jdk,呵呵,實在不該粗心大意,記錄下來,長個記性!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章