首页 > 解决方案 > 从hadoop1迁移到hadoop2后如何恢复hadoop Map reduce作业的性能

问题描述

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

详情如下:

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

Hadoop 1.0.3 环境详细信息:
AMI 版本:2.4.11 Hadoop 版本:1.0.3

EMR 作业的第 1 步(仅 1 步)需要5 分钟才能运行,测试实例由 1 个主控和 1 个核心(aws 术语)组成。在 hadoop 仪表板中,我的应用程序由一个作业组成。

Hadoop 2.8.5 环境详情:

在 Hadoop 2.8.5 环境中,相同的 mapreduce 作业需要大约 15 分钟才能运行所有相同的配置(1master,1 core)

配置值

我尝试过的:调整了以下设置,但在执行作业的时间方面的性能在任何情况下都没有改变。共享测试场景之一的价值

下面我提到尝试了不同的组合

由于 hadoop2 中存在资源管理器架构更改,因此我围绕它进行了实验,但有什么我可能遗漏的。我对 Hadoop 的熟练程度:初学者

标签: javahadoopmapreduceamazon-emr

解决方案


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

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

UsingCombineTextInputFormat.setMaxInputSplitSize(job, bytes)解决了小文件问题,因为它根据作为参数提供的字节数创建了逻辑拆分。

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


推荐阅读