1

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

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

任务说明

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

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

所以拉链会是这样的:

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

key3.zip --> 数据3

谢谢

4

2 回答 2

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

还想评论一下,您可以使用 DataSet 触发数据到达的协调工作,但我对 DataSet 并不熟悉。

于 2012-07-05T01:40:16.700 回答
1

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

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

于 2012-09-26T18:02:15.933 回答