在Hadoop作业中,哪个节点执行排序/重排阶段?增加该节点的内存是否会提高排序/混洗的性能?
答案 0 :(得分:2)
相关 - 根据我的经验 - 在mapred.site.xml中调整的参数是:
io.sort.mb
这是映射器的输出缓冲区。当此缓冲区已满时,数据将被排序并溢出到磁盘。理想情况下,您可以避免多次泄漏。请注意,此内存是maptask堆大小的一部分。mapred.map.child.java.opts
这是地图任务的堆大小,越高,输出缓冲区大小越大。mapred.reduce.tasks
也是相关的。io.sort.factor
是执行合并排序的数字线程,在地图和缩小方面都有。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
找到更多信息