哪个节点对Hadoop中的密钥进行排序/随机播放?

时间:2013-10-30 05:54:05

标签: hadoop mapreduce elastic-map-reduce

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

2 个答案:

答案 0 :(得分:2)

相关 - 根据我的经验 - 在mapred.site.xml中调整的参数是:

  • io.sort.mb这是映射器的输出缓冲区。当此缓冲区已满时,数据将被排序并溢出到磁盘。理想情况下,您可以避免多次泄漏。请注意,此内存是maptask堆大小的一部分。
  • mapred.map.child.java.opts这是地图任务的堆大小,越高,输出缓冲区大小越大。
  • 原则上,减少任务的数量也会影响随机播放的速度。减少轮数是减少时隙的总数/减少任务的数量。请注意,初始shuffle(在映射阶段)只会将数据混洗到活动的Reducer。所以mapred.reduce.tasks也是相关的。
  • io.sort.factor是执行合并排序的数字线程,在地图和缩小方面都有。
  • 压缩也有很大的影响(它加快了从mapper到reducer的转换,但compr / decompr需要付出代价!
  • mapred.job.shuffle.input.buffer.percent是reducer的堆在内存中存储地图输出的百分比。

毫无疑问有更多调整机会,但这些是我花了很长时间玩的。

答案 1 :(得分: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

找到更多信息