我应该使用oozie永远运行MapReduce任务吗?



我有一个mapReduce任务(https://github.com/flopezluis/testing-hadoop),它读取文件夹中的文件并将它们附加到zip中。我需要永远运行此任务,因此当它完成处理它们时,它应该再次运行。我正在阅读有关oozie的信息,但我不确定它是否最合适,因为对于我的问题来说,它可能太大了。

万一oozie是最好的解决方案。如果我编写一个每 10 分钟运行一次的协调器,如果任务花费的时间超过 10 分钟,协调器等待再次运行任务,会发生什么情况?

任务说明

文件夹始终相同。有差异压缩文件,一个用于密钥。这个想法是逐步创建zip文件。我认为这比处理完所有文件后创建 zip 文件更快。这些文件包含如下内容:

<info operationId="key1">
 DATA1
</info>
<info operationId="key1">
DATA2
</info>
<info operationId="key2">
DATA3
</info>

所以拉链将是这样的:

键 1.zip --> 数据 1, 数据 2

密钥3.zip -->数据3

谢谢

你可以为此使用oozie。Oozie有一个设置,可以告诉限制一次可以运行多少个作业实例。如果第一个作业在此之后未完成,则等待运行下一个作业。

来自Oozie文档:

6.1.6. 协调器操作执行策略可以在协调器应用程序中定义协调器作业操作的执行策略。• 超时:协调器作业可以指定其协调器操作的超时,即协调器操作在放弃执行之前将处于"等待"或"就绪"状态的时间。• 并发:协调器作业可以指定其协调器操作的并发性,即在协调器引擎开始限制它们之前,允许并发运行多少个协调器操作(运行状态)。• 执行策略:当协调器引擎中存在积压的协调器操作时,协调器作业可以指定其协调器操作的执行策略。不同的执行策略是"最早的优先"、"最新的优先"和"仅最后的"。积压通常是由于输入数据延迟、并发控制或手动重新运行协调器作业而发生的。

http://archive.cloudera.com/cdh/3/oozie-2.3.0-CDH3B4/CoordinatorFunctionalSpec.html#a6.1.6._Coordinator_Action_Execution_Policies

只是想评论一下,您可以使用数据集触发协调作业的数据到达,但我对数据集不太熟悉。

如果你所需要的只是在不同的输入文件上重复执行相同的Hadoop作业,那么Oozie可能是一个矫枉过正。在测试平台上安装和配置 Oozie 也需要一些时间。编写一个重复提交 hadoop 作业的脚本可能就足够了。

但无论如何,Oozie可以做到这一点。如果将并发设置为 1,则最多将有 1 个 oozie 协调器操作(在您的情况下应该是仅包含一个 Hadoop 作业的工作流)处于运行状态。但是,您可以提高并发阈值以允许并发执行更多操作。

最新更新