【发布时间】:2013-10-30 05:54:04
【问题描述】:
在 Hadoop 作业中,哪个节点执行排序/改组阶段?增加该节点的内存是否会提高排序/改组的性能?
【问题讨论】:
标签: hadoop mapreduce elastic-map-reduce
在 Hadoop 作业中,哪个节点执行排序/改组阶段?增加该节点的内存是否会提高排序/改组的性能?
【问题讨论】:
标签: hadoop mapreduce elastic-map-reduce
根据我的经验,调整 mapred.site.xml 的相关参数是:
io.sort.mb 这是映射器的输出缓冲区。当此缓冲区已满时,数据将被排序并溢出到磁盘。理想情况下,您可以避免多次泄漏。请注意,此内存是 maptask 堆大小的一部分。mapred.map.child.java.opts这是一个map任务的堆大小,这个值越大,你可以放的输出缓冲区的大小就越大。mapred.reduce.tasks 也是相关的。io.sort.factor 是在 map 和 reduce 端执行归并排序的线程数。mapred.job.shuffle.input.buffer.percent 是 reducer 堆中用于存储映射输出到内存中的百分比。毫无疑问,还有更多的调优机会,但这些都是我花了很长时间玩弄的。
【讨论】:
mapred.map.child.java.opts?因为我的节点可以访问 Hadoop 集群的配置文件。
Sort And Shuffle Phase 分为 Mappers 和 Reducers。这就是我们在 Mapper 仍在运行时看到 Reduce % 增加(通常达到 33%)的原因。
增加排序缓冲内存和从中获得的性能将取决于:
a)映射器发出的密钥的大小/总数
b) Mapper 任务的性质:(IO 密集型,CPU 密集型)
c) 给定节点中可用的主内存,映射/减少插槽(占用)
d) 数据偏度
您可以找到更多信息@https://www.inkling.com/read/hadoop-definitive-guide-tom-white-3rd/chapter-6/shuffle-and-sort
【讨论】: