Hadoop錯誤日志


1.錯誤日志:
Directory /tmp/hadoop-root/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
錯誤原因:
在Linux下Hadoop等的各種數據默認保存在 /tmp目錄下。當重啟系統后 /tmp目錄中的數據信息被清除,導致Hadoop啟動失敗。確定目錄 /tmp/hadoop-root/dfs/name是否存在
解決方案:
使用命令bin/hadoop namenode -format 格式化NN,即可正常啟動。

2.錯誤日志:
Incompatible namespaceIDS in … :namenode namespaceID = … ,datanode namespaceID=…  
錯誤原因:
格式化NameNode后會重新創建一個新的namespaceID,以至於和DataNode上原有的不一致。  
解決方案:
1) 在 /tmp/hadoop-root/dfs/data 目錄下殘留的數據刪掉,重新建(很麻煩,但看你了)
2) 狠方法:bin/stop-all.sh hadoop fs namenode -format bin/start-all.sh
3) 登上DataNode,把位於{dfs.data.dir}/current/VERSION中的namespaceID改為和NameNode相同即可(推薦)

[hadoop@dtydb6 current]$ cat VERSION
#Fri Dec 14 09:37:22 CST 2012
namespaceID=525507667
storageID=DS-120876865-10.4.124.236-50010-1354772633249

3.錯誤日志:
使用CDH5,進入hive 想創建表,報告以上的異常”Name node is in safe mode”,使用命令”hadoop dfsadmin -safemode leave ”讓其離開安全模式,仍然不能解決。


解決方案:
使用CDH5發行版,在一般命令之前都要添加“sudo –u hdfs”(ROOT級命令)

# sudo –u hdfs hadoop dfsadmin –safemode leave

4.關於 Warning: $HADOOP_HOME is deprecated.
hadoop 1.0.0 版本,安裝完之后敲入hadoop 命令時, 老是提示這個警告:Warning: $HADOOP_HOME is deprecated.
經查 hadoop-1.0.0/bin/hadoop 腳本和“hadoop-config.sh”腳 本,發現腳本中對HADOOP_HOME的環境變量設置做了判斷,筆者的環境根本不需要設置HADOOP_HOME環境變量。
解決方案:
1) 編輯“/etc/profile”文件,去掉 HADOOP_HOME 的變量設定,重新輸入hadoop fs 命令,警告消失。
2) 編輯“/etc/profile”文件,添加一個環境變量,之后警告消失:export HADOOP_HOME_WARN_SUPPRESS=1
3) 編輯“hadoop-config.sh”文件,把下面的“if - fi”功能注釋掉。

 

5.解決“no datanode to stop ”問題
原因:每次 namenode format 會重新創建一個 namenodeId,而 /tmp/dfs/data 下包含了上次 format 下的 id,namenode format 清空了 namenode 下的數據,但是沒有清空 datanode 下的數據。導致啟動時失敗,所要做的就是每次 fotmat 前,清空 /tmp 一下的所有目錄。
解決方案:
修改每個 Slave 的 namespaceID 使其與Master即NN的 namespaceID 一致。

 

6.Slave 服務器中datanode啟動后又自動關閉
查看日志發下如下錯誤:ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.io.IOException: Call to ... failed on local exception: java.net .NoRouteToHostException: No route to host
解決方案:
關閉防火牆:service iptables stop 

7.從本地往hdfs 文件系統上傳文件
出現如下錯誤:INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Bad connect ack with firstBadLink
INFO hdfs.DFSClient: Abandoning block blk_-1300529705803292651_37023
WARN hdfs.DFSClient: DataStreamer Exception: java.io.IOException: Unable to create new lock.
解決方案:
1) 關閉防火牆:service iptables stop
2) 禁用selinux:編輯“/etc/selinux/config”文件,設置“SELINUX=disabled”

8.hadoop集群啟動start-all.sh的時候,slave總是無法啟動datanode,並會報錯:… could only be replicated to 0 nodes, instead of 1 … 就是有節點的標識可能重復。也可能有其他原因,以下解決方法請依次嘗試。
解決方法:
1).刪除所有節點dfs.data.dir和dfs.tmp.dir目錄(默認為tmp/dfs/data和tmp/dfs/tmp)下的數據文件;然后重新hadoop namenode -format 格式化節點;然后啟動。
2).如果是端口訪問的問題,你應該確保所用的端口都打開,比如hdfs://machine1:9000/、50030、50070之類的。執行#iptables -I INPUT -p tcp –dport 9000 -j ACCEPT 命令。如果還有報錯:hdfs.DFSClient: Exception in createBlockOutputStream java.net.ConnectException: Connection refused;應該是datanode上的端口不能訪問,到datanode上修改iptables:#iptables -I INPUT -s machine1 -p tcp -j ACCEPT
3).還有可能是防火牆的限制集群間的互相通信。嘗試關閉防火牆。/etc/init.d/iptables stop
4).最后還有可能磁盤空間不夠了,請查看 df -al


免責聲明!

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



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