2011-09-25 135 views
1

我在篩選Hadoop指南時找不到問題的答案:我一次性通過shell腳本提交各種Hadoop作業(最多200個)一臺客戶機。每個作業都是通過JAR(非常大,約150 MB)啓動的。在提交作業後,客戶端機器的CPU負載非常高(每個核心都100%),並且RAM變得非常快。這樣,客戶端不再可用。我認爲每個作業的計算完全是在Hadoop框架內完成的,並且在作業運行時,羣集和客戶端之間僅交換一些狀態信息。Hadoop:提交作業後客戶端的CPU負載過高

那麼,爲什麼客戶完全拉伸?我是否以錯誤的方式提交Hadoop作業?每個JAR都太大嗎?

在此先感謝。

回答

2

這不是關於罐子。客戶端正在計算InputSplits。 因此,當每個作業有大量輸入文件時,客戶端機器可能會負擔很多負擔。 但我想在提交200個作業時,jobtracker上的RPC處理程序有一些問題。 jobtracker上有多少個RPC處理程序處於活動狀態?

無論如何,我會一次批量提交多達10或20個工作,並等待他們完成。我想你有默認的FIFO調度程序?因此,您無法一次提交全部200份工作。

+0

我沒有意識到jobtracker的RPC處理程序的配置。 mapred-site.xml中的值設置爲40.我正在使用FairScheduler。 – labrassbandito

+0

那麼,你可以增加一點。但計算輸入分組的內存使用情況仍然存在。 –

+2

另外,jar文件必須複製到HDFS。 200個工作* 150 MB〜30 GB到客戶端的HDFS。此外,mapred.submit.replication默認爲10(因此30 GB必須在HDFS中複製10次)。文檔說這個複製應該是節點數量的平方根。不知道是否減少這種複製使事情變得更快。 –