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