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组成。
Hadoop 2.8.5环境详情。
在Hadoop 2.8.5环境下,同样的mapreduce工作需要 ~15分钟 以相同的配置运行(1master,1 core)。
配置值
yarn.scheduleer.maximum-allocation-mb = 57344
我已经尝试过:围绕以下设置进行调整,但性能方面的问题 执行作业的时间在任何场景下都不会改变。 共享其中一个测试场景的值
下面我提到不同的组合尝试
由于hadoop2中有一个资源管理器的架构变化,我围绕它进行了实验,但是否有什么我可能遗漏的地方。我对Hadoop的熟练程度。初学者
这个问题是 小文件问题 在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。