在 YARN 上的 MapReduce 应用程序中,Reduce 任务的最大内存是否需要大于 Map 任务?就像下面...
mapreduce.map.memory.mb = 7
mapreduce.reduce.memory.mb = 14
mapreduce.map.java.opts = 0.8 * 7 = 5,6
mapreduce.reduce.java.opts = 0.8 * 2 * 7 = 11,2
最佳答案
没有硬性规定,reduce任务内存应该大于map任务内存。
默认情况下,mapreduce.map.memory.mb
和 mapreduce.reduce.memory.mb
都设置为 1,024 MB。这些值有上下限,由 yarn.scheduler.minimum-allocation-mb
(默认值为 1024 MB)和 yarn.scheduler.maximum-allocation- mb
(默认值为 8,192 MB)。
但是,通常建议 reducer 内存设置高于 mapper 内存设置。原因可能是,reducer 的数量少于映射器的数量,并且 reducer 聚合了来自“n”个映射器的记录。此外,您可以通过调整 reducer 的内存配置参数来优化洗牌和排序阶段,例如:mapreduce.reduce.shuffle.input.buffer.percent
(用于存储映射器输出的堆的百分比。)。
Cloudera 建议将任务内存设置减少到 map task 内存的两倍:http://www.cloudera.com/content/www/en-us/documentation/enterprise/latest/topics/cdh_ig_yarn_tuning.html
您还可以在此处检查各种类型的 AWS 集群的这些设置:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/TaskConfiguration_H2.html .您可以观察到 mapreduce.reduce.memory.mb
始终大于或等于 mapreduce.map.memory.mb
。
关于hadoop - Hadoop YARN 中的 Map 和 Reduce 任务内存设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571567/