【问题标题】:How to do a 3 stage Map Reduce streaming?如何进行 3 阶段 Map Reduce 流式传输?
【发布时间】:2015-01-30 05:54:04
【问题描述】:

我对 hadoop 很陌生。

目前我有一个映射器、一个reducer 和一个combiner。 我可以做cat file | mapper.py | reducer.py | combiner.py 来产生结果。并且还原阶段是令人尴尬的并行化。那么,鉴于我有一个 hadoop 集群,谁能告诉我如何让它适应 hadoop 流?

【问题讨论】:

  • reducercombiner 如果操作在 reducer 中是可交换和关联的,则代码相同。你可以参考this

标签: python hadoop mapreduce hadoop-streaming


【解决方案1】:

hadoop 流支持标准输入/标准输出。所以你可以重用你的 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 流来制作组合器,只需一个 reducer 步骤

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

【讨论】:

  • 是不是意味着把hadoop jar hadoop-streaming.jar 和mapper和reducer一起当作新的mapper?
  • @darwinsenior 我没有说reducer 是一个新的映射器。我说mapper.py和reducer.py是第一个提交的job的mapper和reducer。 combiner 是第二个提交作业的 reducer - 它在第一个作业完成后被链接运行。
猜你喜欢
  • 2012-08-14
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多