在 Hadoop 作业中,哪个节点执行排序/改组阶段?增加该节点的内存是否会提高排序/改组的性能?
问问题
1233 次
2 回答
2
相关的 - 根据我的经验 - 调整 mapred.site.xml 的参数是:
io.sort.mb
这是映射器的输出缓冲区。当此缓冲区已满时,数据将被排序并溢出到磁盘。理想情况下,您可以避免多次泄漏。请注意,此内存是 maptask 堆大小的一部分。mapred.map.child.java.opts
这是地图任务的堆大小,越高,您可以放置的输出缓冲区大小就越大。- 原则上,reduce 任务的数量也会影响 shuffle 速度。reduce 轮数是reduce slot 的总数/reduce 任务的数量。请注意,初始 shuffle(在 map 阶段)只会将数据 shuffle 到活动的 reducer。所以
mapred.reduce.tasks
也是相关的。 io.sort.factor
是在 map 和 reduce 端执行合并排序的线程数。- 压缩也有很大的影响(它加快了从 mapper 到 reducer 的传输,但 compr/decompr 是有代价的!
mapred.job.shuffle.input.buffer.percent
是将映射输出存储在内存中的减速器堆的百分比。
毫无疑问,还有更多的调整机会,但这些是我花了很长时间玩弄的机会。
于 2013-10-30T09:30:41.290 回答
1
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
于 2013-10-30T06:34:23.143 回答