2016-02-19 34 views
2

輸入文件大小:75GB我的紗線地圖,減少工作中採取了大量的時間

映射器的數量:2273

減速數:1(如網頁顯示UI)拆分的

:2273

數量的輸入文件:867

羣集:阿帕奇的Hadoop 2.4.0

5個節點集羣,1TB每個。

1個主節點和4個Datanodes。

已經過了4小時。現在仍然只有12%的地圖完成。只是想知道我的羣集配置是否有意義,或者配置有什麼問題?

紗的site.xml

  <property> 
      <name>yarn.nodemanager.aux-services</name> 
      <value>mapreduce_shuffle</value> 
      </property> 
      <property> 
      <name>yarn.nodemanager.aux- services.mapreduce.shuffle.class</name> 
      <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
      </property> 
      <property> 
      <name>yarn.resourcemanager.resource- tracker.address</name> 
      <value>master:8025</value> 
      </property> 
      <property> 
      <name>yarn.resourcemanager.scheduler.address</name> 
      <value>master:8030</value> 
      </property> 
      <property> 
       <name>yarn.resourcemanager.scheduler.address</name> 
      <value>master:8030</value> 
      </property> 
      <property> 
      <name>yarn.resourcemanager.address</name> 
      <value>master:8040</value> 
      </property> 
      <property> 
      <name>yarn.resourcemanager.hostname</name> 
      <value>master</value> 
      <description>The hostname of the RM.</description> 
      </property> 
      <property> 
      <name>yarn.scheduler.minimum-allocation-mb</name> 
      <value>1024</value> 
      <description>Minimum limit of memory to allocate to each container request at the Resource Manager.</description> 
      </property> 
      <property> 
      <name>yarn.scheduler.maximum-allocation-mb</name> 
      <value>8192</value> 
      <description>Maximum limit of memory to allocate to each container request at the Resource Manager.</description> 
      </property> 
      <property> 
      <name>yarn.scheduler.minimum-allocation-vcores</name> 
      <value>1</value> 
      <description>The minimum allocation for every container request at the RM, in terms of virtual CPU cores. Requests lower than this won't take effect, and the specified value will get allocated the minimum.</description> 
      </property> 
      <property> 
      <name>yarn.scheduler.maximum-allocation-vcores</name> 
      <value>32</value> 
      <description>The maximum allocation for every container request at the RM, in terms of virtual CPU cores. Requests higher than this won't take effect, and will get capped to this value.</description> 
      </property> 
      <property> 
      <name>yarn.nodemanager.resource.memory-mb</name> 
      <value>8192</value> 
      <description>Physical memory, in MB, to be made available to running containers</description> 
      </property> 
      <property> 
      <name>yarn.nodemanager.resource.cpu-vcores</name> 
      <value>4</value> 
      <description>Number of CPU cores that can be allocated for containers.</description> 
      </property> 
      <property> 
      <name>yarn.nodemanager.vmem-pmem-ratio</name> 
      <value>4</value> 
      </property> 
      <property> 
    <name>yarn.nodemanager.vmem-check-enabled</name> 
    <value>false</value> 
    <description>Whether virtual memory limits will be enforced for containers</description> 
</property> 

地圖,減少在那裏我使用的多路輸出工作。所以Reducer會發出多個文件。每臺機器都有15GB的Ram。運行的容器是8. RM Web UI中的可用內存總量爲32GB。

任何指導表示讚賞。提前致謝。

+2

您能否提供有關您正在運行的工作類型的信息?還有每臺機器的RAM是多少?您是否可以登錄資源管理器UI並檢查羣集可用的總內存以及並行運行的容器數量。我懷疑這項工作正在利用這些資源。 –

+0

@shivanand pawar:Map-Reduce我正在使用多個輸出的工作。所以我會有多個文件。每臺機器都有15GB的Ram。運行的容器是8.可用內存總量是32GB。 – Shash

回答

1

幾點要檢查:

  1. 塊&分割尺寸看起來很小的考慮您共享的數據。嘗試增加兩個到最佳水平。

  2. 如果未使用,請使用自定義分區程序,以便將數據均勻地分佈在減速器中。

  3. 考慮使用組合器。

  4. 考慮使用合適的壓縮(在存儲映射器結果)

  5. 使用塊複製的最佳數目。

  6. 根據需要增加還原劑的數量。

這些將有助於提高性能。試試看,分享你的發現!

編輯1:嘗試比較成功的地圖任務生成的日誌和長時間運行的地圖任務嘗試的日誌。 (12%意味着完成272個地圖任務)。你會知道它卡在哪裏。

編輯2:調整這些參數:yarn.scheduler.minimum分配-MB,yarn.scheduler.maximum分配-MB,yarn.nodemanager.resource.memory-MB,mapreduce.map.memory.mb ,mapreduce.map.java.opts,mapreduce.reduce.memory.mb,mapreduce.reduce.java.opts,mapreduce.task.io.sort.mb,mapreduce.task.io.sort.factor

這些將改善情況。採取反覆試驗的方法。

另請參考:Container is running beyond memory limits

編輯3:試着理解其中的邏輯的一部分,將其轉換爲豬腳本,執行,看看它是如何工作。

+0

我也想知道爲什麼有這麼多的輸入分割和只有一個reducer ...這是一個自寫的MR應用程序,或者這是使用配置單元/豬? – Havnar

+0

它完全是一個基於特定條件的Map-Reduce程序,我們正在掃描數據。我們使用多個輸出,所以reducer將發出多個文件。 – Shash

+0

我無法對代碼進行任何添加或刪除。我剛剛設置了羣集並嘗試在新羣集中運行作業。 – Shash