2014-04-22 47 views
0

我正在運行超過550 Gb數據的拉丁腳本。 減速機是默認值1.需要大約38分鐘才能生成結果。 我想知道是否增加減速器的數量將更快地執行腳本知道mapper和reducer的用法

任何幫助將不勝感激。

另外,我想知道設置mapper和reducer的概念。

+0

如果您需要更詳細的解釋請告訴我 – Backtrack

回答

0

您可以使用PIG提供的並行功能。請參閱此鏈接瞭解更多信息。 PIG Parallel Feature

2

增加減速器的數量肯定會有幫助(如果您正在執行的操作具有聚合)。由於實際的聚合發生在減少方面,因此運行多個減少器會提高性能。

您可以使用'並行'關鍵字來設置豬減速器的數量。 ex: A = LOAD'myfile'AS(t,u,v); B =組A,組B,組B,組B,組18,

映射器的數量取決於我們使用的輸入和輸入格式的大小。映射器的數量通常等於輸入拆分的數量。

2

以前的答案不一定適合您的情況。確實,如果你有各種縮減鍵,而你的數據集並沒有嚴重偏向其中一個鍵,而且洗牌和/或縮小階段是你操作的瓶頸,並且你有多個核心可用作縮減器,那麼添加更多的減速器將有所幫助。在Pig中,您可以指定要與PARALLEL子句一起使用的編號。

作爲暗示,有其中加入更多的減速不會幫助你的情況:

  1. 你有一個降低您的大部分數據的關鍵。如果大多數數據導致相同的縮減鍵,則該鍵的所有映射輸出都將轉到單個縮減器。如果添加更多減速器,您會發現其他減速器完成得非常快,但減速器仍然需要很長時間才能完成。如果在Pig JOIN期間發生這種情況,則可以使用USING 'skewed'子句解決此問題。
  2. 主要瓶頸是在地圖階段讀取數據並對其進行處理。你說你有550 GB的數據。你使用多少個mappers?他們需要多長時間才能完成?添加更多減速器只能加快洗牌和縮短階段。
  3. 您正在研究可用於減少任務的核心數量極少的小型羣集。如果您在計算機上設置了本地Hadoop集羣,則可能沒有超過1個或2個專用於減少任務的內核。因此,啓動更多減速器意味着那些額外的減速器必須等待CPU時間,並且不會更快地移動。

除了添加減速器之外,另一種使作業更快運行的方法是減少任何不必要的地圖輸出。所有映射輸出都寫入磁盤,然後分發給還原器,再次寫入磁盤。磁盤I/O非常緩慢,如果不需要大量數據,請在映射階段將其丟棄。例如,在Pig中,您可能只希望計算每個鍵的記錄數。在這種情況下,除鍵外的所有數據都應該丟失。


通常,映射器的數量是自動選擇的。如果你覺得mappers的數量太小,你可以使用一些技巧。例如,您可能會發現Pig在將輸入文件組合在一起過於積極,因此您只有一兩個映射器需要很長時間。在這種情況下,您可以將SET pig.maxCombinedSplitSize設置爲更大的數字。但通常,映射器的數量超出了你的控制範圍。

要使用的還原器的數量取決於您可以使用的資源(即一次可以使用多少個還原器?如果您的作業佔用了羣集中的所有還原器,很長一段時間?)和你的數據的性質(即它是否嚴重傾向於一個縮減密鑰?)。還要注意,每個reducer都有一個輸出文件,所以在某些情況下,更多reducer可能會有問題。

相關問題