7

我对 Hadoop 很陌生,目前我被分配了一个项目

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

该项目列在http://wiki.apache.org/hadoop/ProjectSuggestions#research_projects上 Random Ideas 下的项目建议页面上

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

我错过了什么?

4

1 回答 1

5

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

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

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

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

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

于 2013-01-19T18:39:30.440 回答