天天看點

hadoop 叢集常見錯誤解決辦法 hadoop錯誤和解決方法彙總

<a target="_blank"></a>

<a target="_blank">hadoop 叢集常見錯誤解決辦法:</a>

1.   錯誤現象:java.net.noroutetohostexception: no route to host.

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

   解決方法: 在master上關閉防火牆:

chkconfig iptables off.

2.    錯誤現象:org.apache.hadoop.ipc.rpc:

server at jmn/10.22.1.203:9000 not available yet.    /* jmn/10.22.1.203 是  hadoop叢集當中master的主機名/ip

*/

   解決方法: 将/etc/hosts 檔案按配置檔案要求改回來。

many fetch-failures.

   原因:結點間的連通不夠全面。

   解決方法:

        1) 檢查 /etc/hosts要求本機ip對應伺服器名,并且包含所有的伺服器ip和伺服器名。

        2) 檢查 .ssh/authorized_keys要求包含所有伺服器(包括其自身)的public

key。

(二)  在hadoop叢集的master中用指令運作例子易出現的故障:

java heap space.

   原因:jvm記憶體不夠。

   解決方法:修改mapred-site.xml中mapred.child.java.opts屬性的值,其預設值是-xmx200m 可根據需要适當增大

該值。

only be replicated to 0 nodes, instead of 1

   解決方法:在namenode上執行指令:hadoop

namenode –format重新格式化hdfs,在格式化之前,需要将你 

namenode上所配置的dfs.name.dir這一namenode用來存放namenode 持久存儲名字空間及事務日志的本地檔案系統路徑删除,同時将各datanode上的dfs.data.dir的路徑datanode存放塊資料的本地檔案系統路徑的目錄也删除。

in safe mode.

    原因:hadoop進入安全模式。

    解決方法:在shell中執行指令hadoop

dfsadmin -safemode leave 使hadoop離開安全模式。

(三)在windows下eclipse中運作例子易出現的錯誤:

1. 錯誤現象:org.apache.hadoop.security.accesscontrolexception: permission denied: user=administrator, access=execute, inode="job_201111031322_0003":heipark:supergroup:rwx-.

 原因:本地使用者administrator(本機windows使用者)想要遠端操作hadoop系統,沒有權限引起的。

 解決辦法:

i、如果是測試環境,可以取消hadoop hdfs的使用者權限檢查。打開conf/hdfs-site.xml,找到dfs.permissions屬性修改為false(預設為true)ok了。

ii、修改hadoop location參數,在advanced parameter頁籤中,找到hadoop.job.ugi項,将此項改為啟動hadoop的使用者名即可。

2.錯誤現象:ioexception: cannot run program "chmod": createprocess error=2.

  原因: 沒有安裝cygwin或 沒有配置環境變量。

    解決辦法:安裝并配置環境變量 bin到 path下 重新開機 eclipse 問題即可。

3.  錯誤現象: warn mapred.localjobrunner: job_local_0001

java.lang.outofmemoryerror: java heap space

at org.apache.hadoop.mapred.maptask$mapoutputbuffer.&lt;init&gt;(maptask.java:781)

at org.apache.hadoop.mapred.maptask.runoldmapper(maptask.java:350)

………..

  原因:用戶端程式運作時java虛拟機記憶體配置設定不夠

  解決辦法:修改run configuration,選擇arguments頁籤,在vm

arguments欄中加入-xmx1024m,儲存即可解決問題。

==================================

windows cygwin環境下,遇到這個錯誤:org.apache.hadoop.security.accesscontrolexception: permission denied: user=cyg_server, access=execute, inode="job_201010161322_0003":heipark:supergroup:rwx------

解決:剛開始還使用“./bin/hadoop dfs -chmod 777 ”,後來發現老是這樣設定麻煩。可以取消hadoop hdfs的使用者權限檢查。打開conf/hdfs-site.xml,找到dfs.permissions屬性修改為false(預設為true)ok了。注意生産環境處于安全考慮不要這麼搞。

window下使用eclipse開發hadoop程式遇到的問題。

現象一:“dfs locations”無法浏覽dfs中檔案,報錯

cannot connect to the map/reduce location: heipark

call to localhost/127.0.0.1:9000 failed on local exception: java.io.eofexception

現象二:啟動自己編寫的mapred程式報相同錯誤。

原因:hadoop服務端版本和eclipse插件版本不一緻

解決:倒騰了好幾個版本eclipse和hadoop插件,有的點選沒反應,不能浏覽檔案系統。最後整理了一下有兩個辦法:

一:自己編譯eclipse plugin(自己嘗試編譯0.21.0版本沒有成功。首選遇到包的依賴問題,接着編譯成功後,eclipse右鍵建立還是沒有響應)

namenode報錯:“jobtracker.info could only be replicated to 0 nodes, instead of 1”

datenode報錯java.io.ioexception: incompatible namespaceids錯誤

原因:由于datenode一段時間未啟動,再次啟動與namenode資料不同步導緻。

解決一:修改/dfs/data/current/version檔案中namespaceid值,保證namenode和datenode一緻。修改原則:如果你有多個datenode需要都需要修改,那就修改namenode;否則就修改namenode。總之就是最小化修改原則。這樣修改不會删除資料,推薦。

解決二:删除有問題datenode的data檔案夾,然後format namenode。

在windows eclipse開發環境送出job到遠處linux hadoop叢集,運作mapred報錯“ioexception: cannot run program "chmod": createprocess error=2”

原因:安裝cygwin,而且需要設定"cygwin\bin"到環境變量path中

運作hive0.6.0報如下錯誤:

invalid maximum heap size: -xmx4096m 

the specified size exceeds the maximum representable size. 

could not create the java virtual machine.

修改“hive-0.6.0/bin/ext/util/exechivecmd.sh”

hadoop_heapsize=4096 為

hadoop_heapsize=256

使用java client運作hive官方《 getting started guide》中apachelog例子報錯:

classnotfoundexception: org.apache.hadoop.hive.contrib.serde2.regexserde

hive沒有找到hive-contrib-0.7.0.jar嗎?這個jar明明在lib下,解決辦法如下:

    vi hive-default.xml 

&lt;property&gt;  

&lt;name&gt;hive.aux.jars.path&lt;/name&gt;  

&lt;value&gt;file:///home/hadoop/hive-0.7.0/lib/hive-contrib-0.7.0.jar&lt;/value&gt;  

&lt;/property&gt;  

再次啟動hive thrift server,ok了。