7

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

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

我注意到ChainMapperHadoop 中有一个类可以将多个映射器链接到一个大映射器中,并节省映射阶段之间的磁盘 I/O 成本。还有一个ChainReducer类,但它不是真正的“链减速器”。它只能支持以下工作:

[Map+/ Reduce Map*]

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

我正在使用 Hadoop 1.0.4。

4

1 回答 1

3

我不认为您可以将减速器的 o/p直接提供给另一个减速器。我会为此而去的:

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

在 Hadoop 2.X 系列中,您可以在内部使用 ChainMapper 将 mapper 链接在 reducer 之前,并使用 ChainReducer 在 reducer 之后链接 Mappers

于 2013-06-01T08:46:59.353 回答