如何做3阶段地图减少流媒体?

时间:2015-01-30 05:54:05

标签: python hadoop mapreduce hadoop-streaming

我对hadoop很新。

目前我有一个mapper和一个reducer和一个组合器。 我可以cat file | mapper.py | reducer.py | combiner.py来产生结果。减少阶段是令人尴尬的平行。那么,如果我有一个hadoop集群,有人可以告诉我如何将其融入hadoop流中吗?

1 个答案:

答案 0 :(得分:1)

hadoop流支持stdin / stdout。因此,您可以重复使用mapper.py,reducer.py和combiner.py

考虑签名:

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \
    -input myInputDirs \
    -output myOutputDir \
    -mapper org.apache.hadoop.mapred.lib.IdentityMapper \
    -reducer org.apache.hadoop.mapred.lib.IdentityReducer \
    -D stream.map.output.field.separator=. \
    -D stream.num.map.output.key.fields=4 

因此,您可以使用此签名来实现前两个步骤,即mapper.py和reducer.py。

--mapper  mapper.py  --reducer reducer.py

然后你可以通过添加另一个带有减速器步骤的hadoop流来制作组合器

  <first part> |  --  reducer 'combiner.py'