我有一个基本的 mapreduce 问题。我的输入由许多小文件组成,我设计了一个自定义的 CombinedFileInputFormat(它工作正常)。
所有文件的大小加在一起对于 20 000 个文件只有 100 Mb,但处理单个文件需要几分钟(这是一个沉重的索引问题),因此我想要尽可能多的地图任务。hadoop 会处理这个问题还是我必须强制执行它以及如何执行?在后一种情况下,我的第一个猜测是操纵最大拆分大小,但我不确定我是否走在正确的轨道上。非常感谢任何帮助!(关于如何在后一种情况下最好地设置拆分大小的建议也很有帮助)
一些额外的信息更清楚:
然而,我想为每个任务处理多个文件还有另一个原因,那就是我希望能够使用组合器。单个任务的输出只产生唯一的键,但在几个文件之间可能存在大量重叠。通过使用相同的映射任务处理多个文件,我可以实现组合器或使用映射器内组合。这肯定会限制 IO 的数量。事实是,尽管单个文件的大小为几千字节,但该文件的输出大约是 30 * 10^6 键值对,这很容易导致几千兆字节。如果每个maptask只有一个文件,我认为没有另一种方法可以允许组合(或映射器内组合)?
问候,迪特