1. 程式人生 > >hadoop安裝時容易出現的錯誤

hadoop安裝時容易出現的錯誤

1.設定主機名錯誤
看日誌,會發現下面的錯誤


這是由於主機名設定錯誤造成的,請檢查配置檔案中關於主機名的設定,是否正確。
首先使用 hostname 命令檢視主機名是否正確;
然後使用 more /etc/sysconfig/network 命令檢視主機名是否記錄在檔案中;
最後使用 more /etc/hosts 命令檢視 ip 與主機名的對映是否設定。
2.ip 設定錯誤
看日誌,發現下面的錯誤


這是由於 ip 地址設定錯誤引起的,請檢查主機的 ip 設定與配置檔案的 ip 設定是否一致。
使用 more /etc/hosts 命令檢視 ip 與主機名的對映是否設定。
3.hostname 不能帶有下劃線,不能數字開頭
hostname 含有下劃線,也會造成啟動失敗。
啟動完成後,一定使用 jps 命令檢視 5 個節點是否全部成功啟動。如果哪個節點沒有啟
動,請檢視對應的 log 日誌。
4.多次執行 Hadoop 格式化
現象:在 Hadoop-root-datanode-master.log 中有如下錯誤:


原因: 每次 namenode format 會重新建立一個 namenodeId,而 dfs.data.dir 引數配置的目
錄中包含的是上次 format 建立的 id,和 dfs.name.dir 引數配置的目錄中的 id 不一致。
namenode format 清空了 namenode 下的資料,但是沒有清空 datanode 下的資料,導致啟動時
失敗,所要做的就是每次 fotmat 前,清空 dfs.data.dir 引數配置的目錄。重新格式化 HDFS
的命令。
如果真的需要重新格式化, 一定要在格式化前, 刪除 data 目錄下的資料。 否則, NameNode
節點和 DataNode 節點的版本會出現不一致,造成 DataNode 啟動失敗。
5.防火牆沒有關閉
防火牆沒有關閉, 導致節點DataNode與節點NameNode通訊失敗。
可以使用 service iptables stop 命令關閉防火牆。(這是centos6.x的命令)
這樣關閉後,重啟作業系統時,防火牆有可能重啟,可以關閉自動重啟功能。使用
chkconfig iptables off 關閉。
6.安全模式導致的錯誤
錯誤提示如下:


在分散式檔案系統啟動的時候,開始的時候會有安全模式,當分散式檔案系統處於安全
模式的情況下,檔案系統中的內容不允許修改也不允許刪除,直到安全模式結束。安全模式
主要是為了系統啟動的時候檢查各個 DataNode 上資料塊的有效性,同時根據策略必要的復
制或者刪除部分資料塊。執行期通過命令也可以進入安全模式。在實踐過程中,系統啟動的
時候去修改和刪除檔案也會有安全模式不允許修改的出錯提示,只需要等待一會兒即可。
如果著急的話, 可以執行 hadoop dfsadmin –safemode leave 命令關閉安全模式。
7.沒有datanode執行
一個原因是執行檔案系統格式化時,會在namenode資料資料夾(即配置檔案中dfs.name.dir在本地系統的路徑)中儲存一個current/VERSION檔案,記錄namespaceID,標識了所格式化的namenode的版本。如果我們頻繁的格式化namenode,那麼datanode中儲存(即配置檔案中dfs.data.dir在本地系統的路徑)的current/VERSION檔案只是你第一次格式化時儲存的namenode的ID,因此就會造成datanode與namenode之間的id不一致。解決方案是清空hadoop的tmp檔案,重啟格式化hdfs。
Retrying connect to server: localhost/127.0.0.1:9000
說明hadoop的namenode程序沒有啟動,導致與namenode無法連線而報錯。可以先執行stop-all.sh指令碼停止hadoop,然後呼叫start-all.sh重啟hadoop。
jps命令沒有namenode執行
一個可能原因是tmp檔案,預設的tmp檔案每次重新開機會被清空,與此同時namenode的格式化資訊就會丟失,於是我們得重新配置一個tmp檔案目錄。可以通過修改hadoop/conf目錄裡面的core-site.xml檔案,加入以下節點:
<property>
              <name>hadoop.tmp.dir</name>
             <value>/home/chjzh/hadoop_tmp</value>
              <description>A base for othertemporary directories.</description>
</property>
然後重新格式化hdfs
8.啟動後NameNode節點未啟動
 問題就出在tmp檔案,預設的tmp檔案每次重新開機會被清空,與此同時namenode的格式化資訊就會丟失
於是我們得重新配置一個tmp檔案目錄
首先在home目錄下建立一個Hadoop_tmp目錄
sudo mkdir ~/hadoop_tmp
然後修改hadoop/conf目錄裡面的core-site.xml檔案,加入以下節點:
<property>
<name>hadoop.tmp.dir</name>
<value>/home/chjzh/hadoop_tmp</value>
<description>A base for other temporary directories.</description>
</property>
9.程序號
利用jps命令檢視當前執行的hadoop程序時,和hadoop相關的一系列程序datanode、namenode和SecondaryNameNode的程序號也是非常接近的,不會出現上千的差異。如果發現它們的程序號差異過大,則往往會出錯,這時可以通過重啟解決問題。如果多次重啟某些程序依舊沒有改變,還可以利用kill -9命令強制殺死程序,然後再重啟。
2403  DataNode
2725  ResourceManager
2821  NodeManager                                   
2311  NameNode
2527  SecondaryNameNode
3795 NameNode
4007 SecondaryNameNode
4695 Jps
4301 NodeManager
3885 DataNode
4205 ResourceManager