2014-06-29 74 views
1

我上傳了一個客戶jar到S3,並且想要在EMR中運行作業。 所以在集羣配置中,我選擇了1個主,2個工作者,指定了jar路徑,輸入路徑和輸出路徑。一切都很好。爲什麼AWS EMR作業的作業任務按順序執行

一旦開始運行客戶jar,我發現我無法查看工作任務,因爲它告訴我「沒有可用的任務」,這非常奇怪。工作完成後,我發現emr總共創建了306個任務,但是當我查看每個任務的syslog時,我發現它們都是按順序執行的。例如,maptask260在19:40:35完成,而maptask261從19:40:40開始,並且在完成261之後啓動maptask262。

據我所知,EMR根據工作規模創建了一堆任務,我認爲所有任務都應該並行執行,這意味着一旦工作開始運行,就應該創建360任務,並且所有任務應該同時開始工作。

不知道我的理解是錯誤還是我錯誤配置了某些內容?

有人可以幫忙嗎?

回答

0

這些任務應該在EMR中並行運行,但您只啓動了2個工作人員,並且您沒有指定哪種實例類型。如果您有306個任務,並且您希望所有這些任務都並行運行,那麼您可能需要開始多於2個。

例如,使用EMR上的Hadoop 1,可以在m1.xlarge實例上獲得8個映射器插槽。要並行運行306個任務,您必須啓動39個m1.xlarge機器。

我不確定這是否是您想要的,因爲即使map-reduce作業執行5分鐘,您也需要爲每臺計算機支付整整一小時的費用。

+0

我啓動了兩個m1.medium實例。這只是爲了測試目的,所以我沒有使用兩個很多的工作人員......但即使兩個實例不足以並行運行306個任務,至少它應該同時運行2或3個任務......(以我個人的理解)......爲什麼所有的任務都是按順序執行的?所以令人困惑... – user1453951

+0

如果您有超過1個可用插槽,map/reduce作業中的mapper任務(或reducer任務)應該並行運行。 – SNeumann