通过实施高级作业控制框架来帮助链接多个Map-Reduce作业意味着什么?

时间:2013-01-12 13:37:48

标签: hadoop mapreduce oozie

我对Hadoop很陌生,目前我已经在

上分配了一个项目

“实施高级作业控制框架,以帮助链接多个Map-Reduce作业,即调查/改进现有的org.apache.hadoop.mapred.jobcontrol包。”

此项目在http://wiki.apache.org/hadoop/ProjectSuggestions#research_projects

上的随机创意下的项目建议页面上列出

我的困惑是,我是否需要构建Oozie的高级版本(我认为这是一个链接多个工作的工作控制框架)或类似的东西,或者这意味着完全不同的其他东西。

我错过了什么?

1 个答案:

答案 0 :(得分:5)

您所指的项目可能与this Jira ticket有关。

现在JobControl class非常简陋,缺少一些可以让用户的生活更轻松的功能。例如:

  • 能够在作业发生变化时收到通知:现在您只需拨打JobControl.run就可以了,但实际上,如果我的工作发生变化,我会收到通知,这可能会很有趣。
  • 重新提交失败的作业:您可以实现一个工具,以便在/失败时重新提交作业,例如,您可以在ControlledJob类中具有最大重试次数参数,然后再重试该点发送失败的通知。
  • 许多工作定期运行,无论是每周,每天,每小时......这通常是通过crontab完成的,因此将此功能嵌入Hadoop可能会很有趣,例如用户可以设置一个通过指定句点重复作业,JobControl将以这些定期间隔运行它。
  • 也许有一个用户界面可视化您的工作流程和每个工作的依赖关系,哪些步骤已经完成,哪些步骤尚未完成。
  • 有能力不仅能够启动Map / Reduce作业,还有Hive,Pig,因此您可以为用户提供通用界面,以提交任何类型的作业并无缝地监视它们。

最后我认为你不需要重新发明一个全新的框架,JobControl类已经提供了一个很好的起点。尝试从用户的角度思考,您可以做些什么来使提交和管理工作变得更容易和更短。这里和票中的想法只是一个例子,你可以自由地提出自己的想法。

Oozie 而言,它为控制作业流提供了更高的抽象,但设置也更复杂,应保留用于更复杂的作业。我知道有些人对使用Oozie犹豫不决,因为它增加了应用程序的开销。另一个很大的区别是 Oozie 是服务器而JobControl只是在客户端计算机上运行,​​这是额外的开销。虽然上面提到的一些功能以一种方式存在于 Oozie 中,但能够保持简单并在客户端计算机上运行,​​而无需像 Oozie 这样的额外工作在我看来是你项目的关键。