1

在 Hadoop 作业中,哪个节点执行排序/改组阶段?增加该节点的内存是否会提高排序/改组的性能?

4

2 回答 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 回答