2013-01-20 28 views
3

無論我從不同的客戶端服務器提交一堆hadoop作業還是從同一個服務器上提交所有作業,它是否對資源有任何可衡量的影響?我想不是因爲所有的工作都是在集羣中完成的。它是否正確?從哪裏提交hadoop作業,重要嗎?

+0

不,沒關係。只有調度程序將決定運行哪個作業。 –

回答

3

真的不應該在哪裏提交你的工作。客戶端本身並沒有太多的工作,它使用RPC協議來聯繫服務,然後只是閒置直到作業完成。

此外,最重要的是您使用哪種調度程序來分配資源,這可能會產生最大的差異,並決定分配哪些資源以分配哪些工作。更多關於工作調度here

+0

這很重要,請檢查我的回覆。 –

6

在提交給Hadoop集羣的客戶端上唯一需要大量資源的是計算輸入拆分。當輸入數據很大或從同一客戶端提交的作業過多時,由於輸入拆分計算,作業提交可能會變慢。

我無法回想起Hadoop版本或參數,但包含一個可配置參數,用於將提交作業的客戶端的輸入拆分計算移至Hadoop集羣。

+0

有趣的是,您有多少工作需要同時從同一個盒子提交到明顯(超過幾秒鐘)的速度才能提交作業?我剛剛嘗試了在同一個框中同時提交的一些非重要輸入的作業,但我實際上看不到任何重要的資源影響。這看起來像是一個邊緣案例,除非你經常提交工作,否則我不會看到發生的情況,但+1提到它! –

+0

我在Apache論壇上閱讀了這篇文章,並且無法掌握該主題。 –

1

我不認爲你可以將輸入分割計算移動到「經典」版本的Job Tracker中。紗,您可以使用

「yarn.app.mapreduce.am.compute-拆分式集羣」

我猜移動它,Hadoop的人不想超載作業服務器與輸入分流創建。類似於不爲HDFS中的Namenode分配太多工作的設計決定。

在YARN中,每項工作都有自己的應用程序主控,因此不用擔心超負荷工作跟蹤器等SPOF /瓶頸主控。

在參考原始問題時,客戶端工作必須聯繫到namenode才能獲取塊位置(我已經看到塊存儲類中的部分代碼調用某些元數據的數據節點...不確定無論這些發生在輸入拆分創建期間還是發生在任務追蹤器節點中)。如果您在同一個客戶端節點上處理大量作業,這可能會成爲問題。 如果您正在使用YARN,如果所有這些通信都發生在羣集內,則性能會有所增加。

需要檢查Oozie如何處理這個問題。

希望這有助於! Arun

+0

我發現YARN中集羣端輸入拆分計算的唯一參考是https://issues.apache.org/jira/browse/MAPREDUCE-207,它仍然沒有解決。你的信息來源是什麼? –