小编Eng*_*zer的帖子

Hadoop MapReduce为多个作业读取一次数据集

我有一个由许多小文件组成的数据集(平均每个30-40 MB).我想通过MapReduce对它们运行分析,但是对于每个作业,映射器将再次读取文件,这会对I/O性能(开销等)造成沉重负担.

我想知道是否可以使用一次映射器,为不同的reducer发出各种不同的输出?当我环顾四周时,我看到多个减速器是不可能的,但唯一可能的是工作链.但是,我希望并行运行这些作业,而不是按顺序运行,因为它们都将使用相同的数据集作为输入并运行不同的分析.所以,总之,我想要的东西如下:

        Reducer = Analytics1
      /
Run Code Online (Sandbox Code Playgroud)

Mapper - Reducer = Analytics2

      \
        Reducer = Analytics3 
               ...
Run Code Online (Sandbox Code Playgroud)

这可能吗?或者你对解决方法有什么建议吗?请给我一些想法.再次读取这些小文件会为我的分析带来巨大的开销和性能降低.

提前致谢!

编辑:我忘了提到我正在使用带有YARN的Hadoop v2.1.0-beta.

io performance reduce hadoop mapreduce

6
推荐指数
1
解决办法
522
查看次数

标签 统计

hadoop ×1

io ×1

mapreduce ×1

performance ×1

reduce ×1