在Hadoop MapReduce作业中链接多个reducer



现在我有一个4阶段的MapReduce作业,如下所示:

Input-> Map1 -> Reduce1 -> Reducer2 -> Reduce3 -> Reduce4 -> Output

我注意到Hadoop中有一个ChainMapper类,它可以将几个映射器链成一个大的映射器,并节省映射阶段之间的磁盘I/O成本。也有一个ChainReducer级,但它不是一个真正的"链轮减速机"。它只能支持如下作业:

[Map+/ Reduce Map*]

我知道我可以为我的任务设置四个MR作业,并为最后三个作业使用默认映射器。但是这将花费大量的磁盘I/O,因为reducer应该将结果写入磁盘,以便下面的映射器访问它。有没有其他的Hadoop内置功能来链接我的reducer来降低I/O成本?

我使用Hadoop 1.0.4.

我不认为你可以把一个减速器的o/p直接给另一个减速器。我会选择这个:

Input-> Map1 -> Reduce1 -> 
        Identity mapper -> Reducer2 -> 
                Identity mapper -> Reduce3 -> 
                         Identity mapper -> Reduce4 -> Output

在Hadoop 2中。X系列,内部可以使用ChainMapper在减速机前进行链映射,使用ChainReducer在减速机后进行链映射。

相关内容

  • 没有找到相关文章

最新更新