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

Ana*_*nda 7 hadoop mapreduce oozie

我对Hadoop很新,我目前已经分配了一个项目

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

该项目在http://wiki.apache.org/hadoop/ProjectSuggestions#research_projects上随机创意下的项目建议页面上列出

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

我错过了什么?

Cha*_*guy 5

看起来您所指的项目可能与此Jira票证有关.

现在,JobControl类非常简单,它缺少一些可以让用户的生活更轻松的功能.例如:

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

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

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