我的工作进展非常缓慢因为我认为hadoop正在为数据大小创建太多的地图任务。我在一些网站上看到,它可以有效地处理更少的地图以处理更大的数据块 - 有什么方法可以强制执行此操作吗?感谢
答案 0 :(得分:1)
两种可能性:
CombineFileInputFormat
并将您的块一起批量调整到您认为合适的大小。第一个解决方案要求您重写数据以更改块大小,第二个解决方案可以嵌入到您的工作中。
答案 1 :(得分:1)
许多地图确实会产生严重的性能影响,因为地图任务启动的开销是1到3秒,具体取决于您的设置和硬件。
这里的主要设置是JVM重用(mapred.job.reuse.jvm.num.tasks)。将它设置为-1,你可能会得到严重的性能提升。
这个问题的常见根本原因是很多小文件。这里讨论:
Processing large set of small files with Hadoop
解决方案是将它们组合在一起。
如果你的文件确实很大,但是可拆分 - 你可以增加块面,从而减少分割数量 - 地图数量
答案 2 :(得分:0)
增加分割大小或使用CombineFileInputFormat在单个分割中打包多个文件,从而减少处理数据所需的地图任务数量。