2016-07-07 24 views
3

這裏是Hadoop的新手。當作業以超級模式運行時,ApplicationMaster不會從ResourceManager請求容器。相反,運行在單個節點上的AM只是在其自己的進程上執行整個作業。這是有利的,因爲它減少了必須處理RM的開銷。Hadoop中超級模式的用途是什麼?

我不明白:如果一個工作足夠小,可以在一個節點上合理的時間內完成,那麼首先提交MapReduce作業有什麼意義? MapReduce允許在多臺機器上並行執行計算,從而加快了計算速度。如果我們只打算使用一個節點,那麼爲什麼不寫一個常規程序並在我們的本地機器上運行呢?

回答

1

也許有些原因可能是:

  1. 你有一個可重複使用過程中如果需要的話,可以擴大,在這種情況下,它可能會開始使用更多的插槽,而不是在超級模式下運行。
  2. 保持簡單。不太可能你會寫這一份工作,通常你會有許多處理不同數量的數據。爲什麼要改變事情並選擇特定的工作來使用不同的方法來處理數據。
  3. 在MapReduce之外運行的程​​序可能會失去框架提供的其他一些好處,例如故障恢復。
0

我在Apache Crunch中遇到的一個特殊情況是,一個管道由多個由各種DoFn(其中寫入核心邏輯)旋轉的MapReduce(MR)作業組成,每個DoFn結果映射到一個Map和/或減少通常存儲在不可變分佈式對象(PTable/PCollection)中的輸出的作業,這種情況下,基於這些DoFn在PTable/PCollection上運行的數據量,框架決定是否在超級管道中運行每個MR作業或正常模式。所以,當我們看看這條管線的最終工作計數器時,它可能是超級和/或普通磁共振工作的混合體。

考慮M/R作業以增量模式和滿負載模式運行的另一種情況,其中相同的邏輯可能由較少的數據提供,這些數據可以由最少數量的Mappers和一個Reducer處理,或者可以用滿加載需要大量映射器和還原器進行處理的歷史數據,所以基本上邏輯保持不變,但輸入分裂的數據和數量會發生變化,在這種情況下,您不希望移入和移出Hadoop羣集來處理基於數據的數據在規模上讓框架決定模式(超常或正常)。