2013-10-30 70 views

回答

1

排序和随机相在映射器和还原器之间分配。这就是我们在Mapper仍在运行时看到Reduce%增加(通常为33%)的原因。

增加排序缓冲存储器,并从该性能增益将取决于:

a)所述键的大小/总数量由所述映射器

b)该映射器任务的性质发射:(IO密集,CPU密集型)

c)中可用的主存储器,地图/减少槽(占用)在给定的节点

d)数据偏斜

你可以找到更多信息@​​

2

相关 - 以我的经验 - 参数调mapred.site.xml是:

  • io.sort.mb这是一个映射器的输出缓冲器。当这个缓冲区已满时,数据被分类并溢出到磁盘。理想情况下,你避免了很多泄漏。请注意,这个内存是maptask堆大小的一部分。
  • mapred.map.child.java.opts这是一个map任务的堆大小,这个值越高,您可以将输出缓冲区大小设置得越高。
  • 原则上减少任务的数量也影响洗牌速度。减少回合数是减少时间片总数/减少任务数。请注意,初始混洗(在映射阶段)只会将数据混洗到活动减速器。所以mapred.reduce.tasks也是相关的。
  • io.sort.factor是执行合并排序的数量线程,无论是在地图上还是减少方面。
  • 压缩也有很大的影响(其加速从映射器转移到减速机,但COMPR/decompr是有代价的!
  • mapred.job.shuffle.input.buffer.percent是减速的堆地图输出存储在内存中的百分比。

毫无疑问有更多的调整机会,但这些都是我花了相当一段时间玩弄的那些。

+0

谢谢。我该如何更改'mapred.map.child.java.opts''代码?因为我的节点可以访问Hadoop集群的配置文件。 –

+0

配置conf = new Configuration();conf.set(“mapred.child.java.opts”,“希望的堆大小”); 工作职位=新职位(conf); – Thejas

相关问题