在Hadoop作业中,哪个节点执行排序/混排阶段?增加该节点的内存是否可以提高排序/洗牌的性能?哪个节点对Hadoop中的密钥进行排序/洗牌?
1
A
回答
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
是减速的堆地图输出存储在内存中的百分比。
毫无疑问有更多的调整机会,但这些都是我花了相当一段时间玩弄的那些。
相关问题
- 1. Hadoop:排序和洗牌
- 2. NetworkX洗牌节点顺序
- 3. Hadoop V2:关闭洗牌/排序?
- 4. JSON密钥在Python中被洗牌
- 5. XSLT对两个不同节点的子节点进行排序
- 6. Hadoop MapReduce中的排序和洗牌优化
- 7. 洗牌兄弟节点
- 8. 哪个节点在N个hadoop节点中运行Cloudera Manager?
- 9. 插入排序对链表中的节点进行排序
- 10. 洗牌和排序的MapReduce
- 11. Elasticsearch洗牌索引排序
- 12. 对XML进行递归排序 - 只对内部节点进行排序
- 13. XSLT根据最大子节点对父节点进行排序
- 14. 使用IOS上的密钥对json数据进行加密并使用节点j对其进行解密
- 15. 对SortedDictionary进行排序需要来自OrderedDict的不同密钥
- 16. XSL对来自多个节点的内容进行排序
- 17. XSLT - 根据多个级别上的子节点对父节点进行排序
- 18. 用钥匙节点进行Firebase排序/过滤
- 19. 如何使用动态密钥对Ruby哈希进行排序
- 20. Java - 根据密钥对JSON输出进行排序
- 21. 基于密钥对Python字典进行排序?
- 22. 对tcl数组进行排序并获取数组密钥。
- 23. 对节点中的数据进行排序.JS
- 24. 如何对节点orm中的项目进行排序find
- 25. SQL对层次中的节点进行重新排序
- 26. 根据neo4j中的属性值对节点进行排序
- 27. 使用Python对ElementTree中的子节点进行排序
- 28. 使用2个或更多节点对链表进行排序
- 29. numpy的洗牌行然后排序由一个列只
- 30. 结束令牌后开始密钥的令牌排序
谢谢。我该如何更改'mapred.map.child.java.opts''代码?因为我的节点可以访问Hadoop集群的配置文件。 –
配置conf = new Configuration();conf.set(“mapred.child.java.opts”,“希望的堆大小”); 工作职位=新职位(conf); – Thejas