我有一个由大量小文件(每个平均30-40 MB)组成的数据集。我想通过MapReduce对他们进行分析,但是对于每个作业,映射器都会再次读取这些文件,这会对I/O性能(开销等)造成沉重的负担。Hadoop MapReduce为多个作业读取一次数据集
我想知道是否可以使用一次映射器,为不同的reducer发出各种不同的输出?当我环顾四周时,我看到多个减速器是不可能的,但只有可能的事情是工作链。但是,我希望并行运行这些作业,而不是按顺序执行这些作业,因为它们都将相同的数据集用作输入并运行不同的分析。所以,综上所述,我想的东西是一样的东西如下:
Reducer = Analytics1 /
映射 - 减速= Analytics2
\ Reducer = Analytics3 ...
这可能吗?或者你有任何解决方法的建议?请给我一些想法。重新读取这些小文件会为我的分析带来巨大的开销和性能下降。
在此先感谢!
编辑:我忘了提及我在YARN上使用Hadoop v2.1.0-beta。
您可以让您的Reducer在相同的通行证/工作中完成所有的Analytics(1-3)。 – cabad
但是每个减速器可能会采取不同的输入(对)。因此,只有一个reducer中运行所有分析不适用于我。 Mapper应该针对不同的还原器(分析)发出不同的对。另外,在不同的对中,我希望能够从减速器之前发生的Shuffle&Sort机制中受益。 –