1. 程式人生 > >Hadoop一些常見錯誤

Hadoop一些常見錯誤

1.Hadoop採集的字符集問題
修改/etc/sysconfig/i18n 更改字符集為en_US.UTF-8 重啟機器生效。

重啟機器的指令為:在root下敲入如下指令:sync;sync;init 6

2.修改mapreduce 在gateway/效能下修改
MapReduce 子 Java 基礎選項 、Map 任務 Java 選項庫 、Reduce 任務 Java 選項庫 全部配置成 -Xmx4294967296

在TASKTRACKER/效能下修改:MapReduce 子 Java 基礎選項 、Map 任務 Java 選項庫 、Reduce 任務 Java 選項庫 全部配置成 -Xmx4294967296

3.redis掛死,導致無法採集
#現象

redis.clients.jedis.exceptions.JedisDataException:

MISCONF Redis is configured to save RDB snapshots,

but is currently not able to persist on disk.

啟動客戶端: /usr/local/redis/redis-cli

輸入: config set stop-writes-on-bgsave-error no

4.zookeeper無法啟動 處理辦法:
到master主機的/var/lib/zookeeper,刪除所有的檔案,重啟zookeeper即可。

sudo mkdir version-2

sudo chown -R zookeeper:zookeeper version-2

5.如果datanode連線不上namenode,導致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

6.叢集一些易錯問題
錯誤現象:namenode in safe mode.

原因:hadoop進入安全模式。

解決方法:在shell中執行命令hadoop dfsadmin -safemode leave 使hadoop離開安全模式。

7.防火牆一定記得檢視!!!
錯誤現象:java.net.NoRouteToHostException: No route to host.

原因:master伺服器上的防火牆沒有關閉。

解決方法: 在master上關閉防火牆: chkconfig iptables off.

8.虛擬機器記憶體設定
問題:java.lang.OutOfMemoryError: Java heap space

原因:出現這種異常,明顯是 jvm 記憶體不夠得原因,要修改所有的 datanode 的 jvm 記憶體大小。

解決:執行命令Java -Xms1024m -Xmx4096m一般 jvm 的最大記憶體使用應該為總記憶體大小的一半,我們使用的 8G 記憶體,所以設定為 4096m,這一值可能依舊不是最優的值。
個人曾經遇到過的一些小坑,防火牆問題,往往會出現紕漏的地方,一定要檢視防火牆狀態!!!不管大坑小坑,都容易把人整懵。