簡體   English   中英

從 hadoop1 遷移到 hadoop2 后如何恢復 hadoop Map 減少作業的性能

[英]How to restore performance of hadoop Map reduce job after migrating from hadoop1 to hadoop2

Hadoop Map reduce job performance(time to execute job) degraded(5min->15min) after migrating from hadoop 1.0.3 -> hadoop 2.8.5

詳情如下:

我有 Hadoop Map 減少在 AWS EMR 環境中執行的作業。

Hadoop 1.0.3 環境詳情:
AMI 版本:2.4.11 Hadoop 版本:1.0.3

EMR 作業的第 1 步(僅 1 步)需要5 分鍾才能運行,測試實例由 1 個主服務器和 1 個核心(aws 術語)組成。 在 hadoop 儀表板中,我的應用程序包含一個作業。

  • 工作中的 Mapper 任務數:524
  • 作業中的 reducer 任務數:7
  • 機器配置(R3.2xlarge:8VCPU、61Gib RAM、160GB SSD)

Hadoop 2.8.5 環境詳情:

在 Hadoop 2.8.5 環境中,相同的 mapreduce 作業需要大約 15 分鍾才能運行所有相同的配置(1master,1 core)

  • 作業中的 Mapper 任務數:524
  • 作業中的 reducer 任務數:{3,7} // 嘗試使用 3 個和 7 個 reducer
  • 機器配置(R5.2xlarge:8VCPU,64Gib RAM,350GB EBS)

配置值

  • yarn.scheduler.minimum-allocation-mb =32
  • yarn.scheduler.maximum-allocation-mb = 57344

    • 有關使用 Hadoop 2.8.5 MR 作業運行的作業的其他信息
    • 經過:15分鍾,5秒
    • 診斷:
    • 平均 Map 時間 7 秒
    • 平均隨機播放時間 10 分鍾,51 秒
    • 平均合並時間 0sec
    • 平均減少時間 0sec

我嘗試過的:調整了以下設置,但在執行作業的時間方面的性能在任何情況下都沒有改變。 共享測試場景之一的價值

  • mapreduce.map.java.opts = -Xmx5734m
  • mapreduce.reduce.java.opts = Xmx11468m

下面我提到嘗試了不同的組合

  • mapreduce.map.memory.mb = {4163, 9163, 7163}
  • mapreduce.reduce.memory.mb = {2584, 6584, 3584}

由於 hadoop2 中存在資源管理器架構更改,因此我圍繞它進行了試驗,但是否有任何我可能遺漏的東西。 我在 Hadoop 中的熟練程度:初學者

問題是 Hadoop map-reduce 中的小文件問題 在 Hadoop V1.0.3 中,通過重新啟動 JVM 容器(mapred.job.reuse.jvm.num.tasks)掩蓋了這個問題

但是,在 Hadoop V2 中,不允許重用 JVM 容器。 使用 Uber 模式也不可行,因為它將按順序運行 ApplicationMaster 容器中的所有 map 任務。

使用CombineTextInputFormat.setMaxInputSplitSize(job, bytes)解決了小文件問題,因為它根據作為參數提供的字節數創建了邏輯拆分。

https://hadoop.apache.org/docs/r2.4.1/api/org/apache/hadoop/mapreduce/lib/input/CombineFileInputFormat.ZFC35FDC70D5FC69D769883A82E2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM