我的工作进展非常缓慢,因为我认为 hadoop 为数据的大小创建了太多的地图任务。我在一些网站上读到,它可以有效地使用更少的地图来处理更大的数据块——有什么办法可以强制这样做吗?谢谢
问问题
1024 次
3 回答
1
两种可能:
- 增加 90gb 数据的块大小,将其设置为 128m 或更大将使您的地图任务“工作更多”
- 使用
CombineFileInputFormat
并将您的块一起批处理到您认为合适的大小。
第一个解决方案要求您重写数据以更改块大小,第二个解决方案可以嵌入到您的工作中。
于 2012-05-23T05:31:29.927 回答
1
许多地图确实会对性能产生严重影响,因为地图任务启动的开销为 1 到 3 秒,具体取决于您的设置和硬件。
这里的主要设置是 JVM 重用(mapred.job.reuse.jvm.num.tasks)。将其设置为 -1,您可能会获得显着的性能提升。
这个问题的通常根本原因是很多小文件。此处讨论:
使用 Hadoop 处理大量小文件
解决方案是将它们组织在一起。
如果您的文件确实很大,但可拆分 - 您可以增加块边,从而减少拆分数量及其 - 地图数量
于 2012-05-23T05:36:19.827 回答
0
增加拆分大小或使用 CombineFileInputFormat 将多个文件打包到一个拆分中,从而减少处理数据所需的映射任务数量。
于 2014-03-28T20:18:41.073 回答