報錯一
<!-- 指定hadoop臨時目錄-->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/software/hadoop/tmp</value>
</property>
備註:如沒有配置hadoop.tmp.dir參數,此時系統默認的臨時目錄爲:/tmp/hadoo-hadoop。而這個目錄在每次重啓後都會被幹掉,必須重新執行format才行,否則會出錯。
報錯二
[heren@node10 lib]$ hdfs dfsadmin -report
通過hdfs命名查看集羣狀態
[heren@node10 hadoop]$ hdfs dfsadmin -report
17/08/18 08:39:18 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Configured Capacity: 56446537728 (52.57 GB)
Present Capacity: 37555519488 (34.98 GB)
DFS Remaining: 37555445760 (34.98 GB)
DFS Used: 73728 (72 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
下載完以後,解壓到hadoop的lib/native目錄下,覆蓋原有文件即可
[heren@node10 lib]$tar xf hadoop-native-64-2.6.0.tar
[heren@node10 lib]$ mv libh* native
[heren@node10 lib]$ hdfs dfsadmin -report
Configured Capacity: 56446537728 (52.57 GB)
Present Capacity: 37547646976 (34.97 GB)
DFS Remaining: 37547573248 (34.97 GB)
DFS Used: 73728 (72 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
報錯三
no datanode to stop
原因:每次namenode format會重新創建一個namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的數據,但是沒有清空datanode下的數據,導致啓動時失敗,所要做的就是每次fotmat前,清空tmp一下的所有目錄
1)修改每個Slave的namespaceID使其與Master的namespaceID一致。
或者
2)修改Master的namespaceID使其與Slave的namespaceID一致。
該"namespaceID"位於"/usr/hadoop/tmp/dfs/data/current/VERSION"文件中,前面藍色的可能根據實際情況變化,但後面紅色是不變的。
報錯四
從本地上傳文件到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 block.
解決方案是:關閉防火牆和 selinux
報錯五
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
解決方案是:關閉防火牆
報錯六
出現如下錯誤:
org.apache.hadoop.dfs.SafeModeException: Cannot delete ..., Name node is in safe mode
在分佈式文件系統啓動的時候,開始的時候會有安全模式,當分佈式文件系統處於安全模式的情況下,文件系統中的內容不允許修改也不允許刪除,直到安全模式結束。安全模式主要是爲了系統啓動的時候檢查各個DataNode上數據塊的有效性,同時根據策略必要的複製或者刪除部分數據塊。運行期通過命令也可以進入安全模式。在實踐過程中,系統啓動的時候去修改和刪除文件也會有安全模式不允許修改的出錯提示,只需要等待一會兒即可。
解決方案是:關閉安全模式
hadoop dfsadmin -safemode leave
報錯七
處理速度特別慢
出現map很快,但是reduce很慢,而且反覆出現"reduce=0%"。
解決方案如下:
修改"conf/hadoop-env.sh"中的"export HADOOP_HEAPSIZE=4000"
hadoop OutOfMemoryError
出現這種異常,明顯是jvm內存不夠得原因。
解決方案如下:要修改所有的datanode的jvm內存大小。
報錯九
錯誤類型:
java.io.IOException: Task process exit with nonzero status of 255.
at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:424)
錯誤原因:
Set mapred.jobtracker.retirejob.interval and mapred.userlog.retain.hours to higher value. By default, their values are 24 hours. These might be the reason for failure, though I'm not sure restart.
解決方案如下:單個datanode
如果一個datanode 出現問題,解決之後需要重新加入cluster而不重啓cluster,方法如下:
1)關閉防火牆
2)禁用selinux