我想做一个mapreduce设计像这样在一个工作。
例子:
我想要一份工作:*************************************************************
[mapper a]-->[mapper c]
[mapper b]-->[reducer b]
在此之后,[b]->[mapper c]
[mapper c]-->[reducer c]******************************************************************************
所以[mapper a]&[reducer b]-->[mapper c]。下一步[mapper c]继续[reducer c]。我希望上面所有的场景都在一个作业上运行。
就像一个mapreduce作业中的路由。我可以将许多Map器路由到特定的reducer,并在一个作业中再次将其继续到其他Map器而不是reducer。我需要你的建议,兄弟
谢谢。。。。。
1条答案
按热度按时间nhn9ugyo1#
--edit开始简化问题,假设您有三个joba、jobb、jobc作业,每个作业由一个map和一个reduce阶段组成。现在您想在jobc的mapper任务中使用joba的mapper输出,因此jobc只需要等待joba完成其Map任务,您可以在joba中使用multipleoutputs类在jobc可以轮询的位置保存/写入Map阶段输出--编辑端点
通过编程,您可以执行以下代码,其中getjob()应该在相应的map reduce类中定义,您可以在其中指定配置、distributedcache、输入格式等。
为了更好地控制工作流,可以考虑使用oozie或springbatch。
使用oozie,您可以定义workflow.xml并根据需要安排每个作业的执行。springbatch也可以用于相同的应用程序,但需要一些编码和理解,若您有相关的背景知识,可以直接使用它--编辑启动oozie是一个工作流管理工具,它允许您配置和安排作业--编辑端点
希望这有帮助。