如何强制Hadoop处理每张地图的更多数据



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

两种可能性:

  1. 增加 90GB 数据的块大小,将其设置为 128m 或更大将使您的地图任务"工作更多"
  2. 使用CombineFileInputFormat并将块批处理到您认为合适的大小。

第一种解决方案要求您重写数据以更改块大小,第二种解决方案可以嵌入到您的作业中。

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

增加拆分大小或使用 CombineFileInputFormat 将多个文件打包到单个拆分中,从而减少处理数据所需的映射任务数。

相关内容

  • 没有找到相关文章

最新更新