从hadoop1迁移到hadoop2后,如何恢复hadoop Map reduce作业的性能?

问题描述 投票:0回答:1

Hadoop Map从hadoop 1.0.3 -> hadoop 2.8.5迁移到Hadoop 2.8.5后,作业性能降低(作业执行时间)(5min->15min)。

详情如下。

我有Hadoop Map reduce作业在AWS EMR环境中执行。

Hadoop 1.0.3环境详情。 AMI版本:2.4.11Hadoop版本:1.0.3。

EMR作业的第1步(只有1步)需要花费 5分钟 测试实例由1个主控和1个核心组成(aws术语)。在hadoop dashboard中,我的应用由一个job组成。

  • 工作中Mapper任务的数量:524个。
  • 工作中减速器任务数:7
  • 机器配置(R3.2xlarge: 8VCPU, 61Gib内存, 160GB SSD)

Hadoop 2.8.5环境详情。

在Hadoop 2.8.5环境下,同样的mapreduce工作需要 ~15分钟 以相同的配置运行(1master,1 core)。

  • 工作中的Mapper任务数量:524个。
  • 工作中的减速器任务数:{3,7}。/ 尝试使用3和7的减速器。
  • 机器配置(R5.2xlarge: 8VCPU, 64Gib RAM, 350GB EBS)

配置值

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

    • 关于使用Hadoop 2.8.5 MR作业运行的其他信息。
    • 历时:15分5秒
    • 诊断。
    • 平均地图时间7秒
    • 平均洗牌时间 10分51秒
    • 平均合并时间0秒
    • 平均缩短时间0秒

我已经尝试过:围绕以下设置进行调整,但性能方面的问题 执行作业的时间在任何场景下都不会改变。 共享其中一个测试场景的值

  • 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的熟练程度。初学者

java hadoop mapreduce amazon-emr
1个回答
0
投票

这个问题是 小文件问题 在Hadoop map-reduce中,这个问题被重新发布JVM容器(mapred.job.reuse.jvm.num.tasks)所掩盖。在Hadoop V1.0.3中,这个问题被重用JVM容器(mapred.job.reuse.jvm.num.tasks)所掩盖。

然而,在Hadoop V2中,重用JVM容器是不允许的。使用Uber模式也是不可行的,因为它将依次运行ApplicationMaster容器中的所有地图任务。

使用 "Uber模式 "也不可行,因为它会在ApplicationMaster容器中依次运行所有地图任务。CombineTextInputFormat.setMaxInputSplitSize(job, bytes) 解决了小文件的问题,因为它根据作为参数提供的字节数创建了一个逻辑分割。

https:/hadoop.apache.orgdocsr2.4.1apiorgapachehadoopmapreducelibinputCombineFileInputFormat.html。

© www.soinside.com 2019 - 2024. All rights reserved.