2012-08-17 142 views
2

我有這麼頭痛很久,目前我的hadoop集羣就是這樣,我有40個salve節點運行,每個slave節點配置25個映射器10減速器,所以我可以同時啓動40 * 25 = 1000個映射器和400個減速器。好了,現在我有以下工作:如何在並行hadoop作業中運行stando hadoop distritbuion 0.20.0

JOB1:我配置運行5級映射器和5個減速 作業2:我配置爲運行20級映射器和10個減速 作業3:我配置爲運行975級映射器和385個減速

假設我使用默認的FIFO作業調度,如果我連續提交3個映射器,這3個作業可能同時運行嗎?使集羣得到最大限度的利用?

目前,我測試了一下,在mapper階段,似乎1000個mapper可以在提交3個job之後啓動,但是在reducer階段,它變得非常慢,所以我等了很長時間,沒有一個上述工作完成後,似乎他們在減速機階段掛起。

我不是很理解這個的內在原因,誰能幫我解決這個問題,讓我可以提交工作和睡覺,那麼明天早上我看到我的所有工作都按順序完成了?我是否需要使用公平調度來使其工作?

回答

1

提供解決方案有點困難 - 但我會嘗試指示找到一個解決方案。 1.如果羣集中有足夠的減少插槽 - 可能您的問題與並行作業執行無關。至少我不會首先懷疑它。
2.我建議使用Fair Scheduler - 它專門爲並行執行和資源共享而構建。
3.我建議分別測試每個作業,並且只在每個作業運行良好之後開始平行運行。
4.緩慢減少可能有很多原因,但我會檢查以下內容(我所知道的):
a)很多數據在映射器和縮減器之間傳遞(及其串行化)。看看寫入計數器的文件系統字節來識別它。
b)存在嚴重的數據偏差和大量數據來到單個減速器。