如何强制hadoop处理每个地图的更多数据

时间:2012-05-23 04:59:14

标签: hadoop mapreduce

我的工作进展非常缓慢因为我认为hadoop正在为数据大小创建太多的地图任务。我在一些网站上看到,它可以有效地处理更少的地图以处理更大的数据块 - 有什么方法可以强制执行此操作吗?感谢

3 个答案:

答案 0 :(得分:1)

两种可能性:

  1. 增加90gb数据的块大小,将其设置为128m或更大将使您的地图任务“更有效”
  2. 使用CombineFileInputFormat并将您的块一起批量调整到您认为合适的大小。
  3. 第一个解决方案要求您重写数据以更改块大小,第二个解决方案可以嵌入到您的工作中。

答案 1 :(得分:1)

许多地图确实会产生严重的性能影响,因为地图任务启动的开销是1到3秒,具体取决于您的设置和硬件。
这里的主要设置是JVM重用(mapred.job.reuse.jvm.num.tasks)。将它设置为-1,你可能会得到严重的性能提升。
这个问题的常见根本原因是很多小文件。这里讨论: Processing large set of small files with Hadoop 解决方案是将它们组合在一起。
如果你的文件确实很大,但是可拆分 - 你可以增加块面,从而减少分割数量 - 地图数量

答案 2 :(得分:0)

增加分割大小或使用CombineFileInputFormat在单个分割中打包多个文件,从而减少处理数据所需的地图任务数量。