Yuh*_*hao 7 java hadoop mapreduce
现在我有一个4阶段MapReduce作业如下:
Input-> Map1 -> Reduce1 -> Reducer2 -> Reduce3 -> Reduce4 -> Output
Run Code Online (Sandbox Code Playgroud)
我注意到ChainMapper
Hadoop 中有一个类可以将几个映射器链接到一个大映射器,并在映射阶段之间保存磁盘I/O成本.还有一个ChainReducer
类,但它不是一个真正的"减速器".它只能支持以下工作:
[Map+/ Reduce Map*]
Run Code Online (Sandbox Code Playgroud)
我知道我可以为我的任务设置四个MR作业,并使用默认的映射器来完成最后三个作业.但是这将耗费大量磁盘I/O,因为reducers应该将结果写入磁盘,让以下映射器访问它.是否还有其他Hadoop内置功能可以将我的Reducer连接起来以降低I/O成本?
我正在使用Hadoop 1.0.4.
我不认为你可以将一个reducer的o/p直接提供给另一个reducer 。我会选择这个:
Input-> Map1 -> Reduce1 ->
Identity mapper -> Reducer2 ->
Identity mapper -> Reduce3 ->
Identity mapper -> Reduce4 -> Output
Run Code Online (Sandbox Code Playgroud)
在Hadoop 2.X系列中,在内部您可以使用ChainMapper将reducer之前的mappers链接起来,并使用ChainReducer将reducer之后的Mappers链接起来。
归档时间: |
|
查看次数: |
4676 次 |
最近记录: |