2015-03-02 18 views
1

我知道這個簡單的問題,我需要這個社區的這個查詢的一些幫助,當我創建ORC格式的PartitionTable時,當我嘗試從非分區表中轉儲數據到210 GB的2 GB文件,我看到Mapper的Number是2,Reducer是2。有沒有辦法增加Mapper和Reducer。我的假設是我們不能設置Mapper和減速器的數量像MR 1.0,它是基於像Yarn容器大小,映射器最小內存和最大內存的設置。任何人都可以建議我TEz計算映射器和縮減器。保持內存大小設置的最佳值是什麼,這樣我就不會遇到:Java堆空間,Java內存不足問題。我的文件大小可能會增長到100GB。請幫助我。如何在Apache TEZ中增加Mappers和Reducer

回答

1

您仍然可以設置紗線中的映射器和縮減器的數量。你嘗試過嗎?如果是這樣,請回到這裏。

Yarn更改了底層的執行機制,但#mappers和#reducers描述了作業需求 - 而不是作業資源的分配方式(紗線和mrv1的不同)。

傳統地圖/減少有一個硬編碼的地圖和減少「插槽」。正如你所說 - 紗線使用容器 - 這是每個應用程序。紗線因此更加靈活。但#mappers和#reducers是輸入在這兩種情況下的工作。而且在這兩種情況下,映射器和縮減器的數量都可能與請求的數量不同。通常情況下,#reducers要麼是

  • (一)正是被請求的數量
  • (二)只有一個減速 - 也就是說,如果作業所需它如總訂貨
+0

當我嘗試通過配置單元命令設置映射器和reducer並且tez有執行引擎時,我的數字沒有得到反映。你提到「紗線改變了底層的執行機制,但是#mappers和#reducers描述了工作要求 - 而不是工作資源的分配方式(紗線和mrv1的不同)。」這意味着基於工作類型紗線將分配容器,其中MRV1只是利用可用資源或通過設置#減速器..你可以詳細說明「工作資源分配的方式」 – user145610 2015-03-04 21:41:12

+0

我已經更新了我的答案 – javadba 2015-03-04 21:51:09

+0

thnx javadba。我明白了。即使我們爲#mapper和reducer指定編號,根據Job的要求/大小(如果可能不同),即大於等於1且小於等於所提及的reducer的編號。如果我錯了,請糾正我。 ..在一個容器中,我可以在同一個容器(RAM,CPU和I/O磁盤)中擁有更多的映射任務或同時包含映射和減速器任務..但是,在MR 1.0 Mapper將位於同一個節點和Reducer在另一個節點上。 – user145610 2015-03-07 21:40:27

1

對於內存設置,如果您使用的是tez,請使用以下2個設置:

1)hive.tez.container.size - 這是將要使用的Yarn容器的大小(以MB爲單位)。

2)hive.tez.java.opts - 這是針對將用於每個任務的java opts。如果容器大小設置爲1024 MB,請將java選擇爲「-Xmx800m」而不是「-Xmx1024m」。 YARN殺死使用比指定容器大小更多的內存的進程,並且假定java進程的內存佔用量通常可以超過指定的Xmx值,則將Xmx設置爲與容器大小通常導致問題相同的值。

相關問題