2012-10-31 60 views
0

我有一個hadoop集羣,它有一個master(運行namenode和jobtracker)和兩個slave(每個都運行datanode和tasktracker)。現在每當我執行Datanode,tasktracker在執行hadoop fs -put命令時死亡

hadoop fs -put localfile /user/root/tmp/input 

對於4-8 GB的數據,該命令執行完美。

但是當我將數據增加到30GB時,其中一個從機死亡。正如我得到一個java.io.noRouteToHost異常,並且該命令退出失敗。我立即對該從站進行了ping,發現即使以太網連接已關閉。所以,我必須這樣做手工

ifup eth0 

對奴隸再次使主機了。 我無法在這裏找出問題。我也改變了以下屬性

dfs.socket.timeout, for read timeout 
dfs.datanode.socket.write.timeout, for write timeout 

我增加了讀取超時到600000和寫入超時我改變爲0使它無限。請任何建議。我一直堅持這一兩天

回答

0

得到了解決方案。問題出在硬件上。儘管我的網卡是千兆位,但所有節點都插入的交換機支持100MBps。將交換機更改爲千兆,並且工作得很好。

0

嘗試使用「distCp」複製大量數據。

+0

但據我所知,「DistCp使用」用於大數據的聚類內轉移。不用於將數據從本地文件系統傳輸到HDFS。從本地FS傳輸到HDFS時,我遇到了上述問題。對不起,如果我不精確。 – Nilesh

+0

你也可以使用它。嘗試使用這樣的東西:cluster @ tariq:〜/ hadoop-1.0.3 $ bin/hadoop distcp file:///home/cluster/pig-0.9.1/ hdfs:// localhost:9000/pig / – Tariq

-1

我遇到了一個小問題,我用-copyFromLocal代替-put,它解決了這個問題。

^h adoop fs -copyFromLocal localfile /user/root/tmp/input