1

我的工作进展非常缓慢,因为我认为 hadoop 为数据的大小创建了太多的地图任务。我在一些网站上读到,它可以有效地使用更少的地图来处理更大的数据块——有什么办法可以强制这样做吗?谢谢

4

3 回答 3

1

两种可能:

  1. 增加 90gb 数据的块大小,将其设置为 128m 或更大将使您的地图任务“工作更多”
  2. 使用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 回答