当前位置: 首页 > 知识库问答 >
问题:

Hadoop调度作业按顺序运行(一个接一个作业)?

邓驰
2023-03-14

假设我在Hadoop环境中资源有限,我不想安排长时间运行的作业(即需要几天时间才能完成)。我正在分析大量过去的时间序列数据。我想安排一次需要一天数据的mapreduce作业(这需要一个小时来处理)。

那么,我如何安排,使新的工作提交后,前一个工作完成?

共有1个答案

广亮
2023-03-14

如果您想要一个快速简单的方法,只需编写一个shell脚本,为您想要运行的每个作业按顺序调用Hadoop jar即可。

如果您想要一个更健壮的方法,可以使用Apache Oozie定义一个作业工作流,这些工作流将按顺序运行您的作业。如果您是Hadoop新手,您可能会发现使用Hue GUI定义和运行Oozie工作流是最容易的。

 类似资料:
  • 我正在运行一个单节点集群并处理timeseries数据。我有一组MapReduce作业从客户端应用程序定期运行(使用Quartz crontrigger)。例如, 一切都很好。但是有时,可以同时触发多个作业,例如在凌晨00:00触发job1、job2、job3。即使设置了作业优先级,由于可用的映射槽,这些作业被发现是并行执行的。因此,对于低优先级作业,一些输入数据被遗漏了。

  • 我有一个,每个月底运行一次。运行后,它会将一些数据保存到数据库中。 当我扩展应用程序时(例如有2个实例),两个实例都运行计划作业,并且都保存数据,在一天结束时,我的数据库有相同的数据。 所以我希望计划作业只运行一次,而不管云上的实例数量如何。

  • 我正在利用石英调度,有2个工作。第一个工作是执行大约2分钟的任务,第二个是设置为临时文件的清理操作。因此,我需要设置时间表,以一种方式工作,即在第一个作业被执行/完成执行任务后,我需要在第二个作业的帮助下进行清洁操作。 考虑到Quartz 2.1.x下的示例9-Job Listeners,该示例说明我们可以定义一个名为jobWasExecuted(_,_)的方法;并在第一个作业被执行/或处于运行状

  • 问题内容: 我正在使用“石英计划”,并且有2个工作。第一项作业将执行大约2分钟的任务,第二项作业将被设置为清理临时文件。因此,我需要设置计划表,使其工作方式如下:在执行完第一项任务/完成任务后,我需要在第二项任务的帮助下进行清洁操作。 考虑示例9-Quartz 2.1.x下的作业侦听器,它声明我们可以定义一个名为jobWasExecuted(,)的方法;在Job Listener中,它在第一个作业

  • 我正在用Spring Batch开发使用Spring Boot。 我使用了Spring Boot提供的最小配置,并定义了一些作业(根本没有XML配置)。但当我运行应用程序时, 作业按任意顺序依次执行。 我在注释类中以这种方式定义作业,其余的由Spring完成: 编辑:这个警告能给出一个提示吗?(也许没什么可做的)

  • 考虑以下以串行/顺序方式读取文件数组的代码。返回一个promise,该promise仅在按顺序读取所有文件后才解析。 上面的代码可以工作,但我不喜欢必须为事情按顺序发生而做递归。有没有更简单的方法可以重写这段代码,使我不必使用我怪异的函数? 最初,我尝试使用,但这导致所有调用并发发生,这不是我想要的: