0

作为解决方法的一部分,我想使用两个 mapreduce 作业(而不是一个),它们应该按顺序运行以获得所需的效果。

每个作业中的 map 函数只是简单地发出每个键值对而不进行处理。每个作业中的 reduce 函数是不同的,因为它们执行不同类型的处理。

我偶然发现了 oozie,它似乎直接写入后续作业的输入流(或者不是吗?) - 这会很棒,因为中间数据很大(I/O 操作将成为瓶颈)。

如何使用 oozie(工作流程中的 2 个 mr 作业)实现这一目标?

我确实浏览了以下资源,但它们只是将单个作业作为工作流运行: https ://cwiki.apache.org/confluence/display/OOZIE/Map+Reduce+Cookbook

帮助表示赞赏。

干杯

4

2 回答 2

2

有,看看Hadoop中的ChainMapper类。它允许您将一个映射器的映射输出直接转发到下一个映射器的输入,而不会碰到磁盘。

于 2012-12-14T14:58:28.367 回答
1

Oozie 是一个用于描述作业工作流的系统,其中该作业可能包含一组 map reduce 作业、pig 脚本、fs 操作等,并支持数据流的 fork 和 join。

但是,它不允许您将一个 MR 作业的输入作为输入流式传输到另一个 - oozie 中的 map-reduce 操作仍然需要某种类型的输出格式,通常是基于文件的,因此您的作业 1 的输出将仍然通过 HDFS 序列化,然后由作业 2 处理。

oozie 文档有一个包含多个 MR 作业的示例,包括一个 fork:

http://oozie.apache.org/docs/3.2.0-incubating/WorkflowFunctionalSpec.html#Appendix_B_Workflow_Examples

于 2012-11-14T00:43:28.747 回答