如何做一个3阶段的Map减少流?

to94eoyn  于 2021-06-04  发布在  Hadoop
关注(0)|答案(1)|浏览(234)

我对hadoop非常陌生。
目前我有一个Map器,一个减缩器和一个合并器。我能做到 cat file | mapper.py | reducer.py | combiner.py 产生结果。还原阶段是尴尬的平行。那么,如果我有一个hadoop集群,有人能告诉我如何将它融入hadoop流媒体吗?

nc1teljy

nc1teljy1#

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'

相关问题