在Hadoop中调度和协调oozie工作流程

时间:2020-02-23 14:33:37  来源:igfitidea点击:

创建了一组工作流后,我们可以在执行时使用一系列Oozie协调器作业来计划。
我们有两个调度选项,用于执行:特定时间和数据的可用性与某个时间结合。

oozie协调员工作的基于时间的计划

Oozie协调器作业可以安排在某个时间执行,但在它们启动后,它们可以配置为以指定的间隔运行。
以下示例显示了在指定的开始时间和日期开始运行的协调器作业:

<coordinator-app name="sampleCoordinator"
                 frequency="${coord:days(1)}"
                 start="2014-06-01T00:01Z "
                 end="2014-06-01T01:00Z "
                 timezone="UTC"
                 xmlns="uri:oozie:coordinator:0.1">
   <controls>...</controls>
   <action>
      <workflow>
         <app-path>${workflowAppPath}</app-path>
      </workflow>
   </action>     
</coordinator-app>

基于时间和数据可用性的Oozie协调作业的计划

如果指定的数据文件或者目录可用,也可以安排Oozie协调器作业在某个时间执行。
以下列表显示了在指定的开始时间和日期开始运行的协调器的示例,如果由TriggerDataseTdir识别的数据集存在,并且运行直到指定的结束时间:

<coordinator-app name="sampleCoordinator"
                 frequency="${coord:days(1)}"
                 start="${startTime}"
                 end="${endTime}"
                 timezone="${timeZoneDef}"
                 xmlns="uri:oozie:coordinator:0.1">
   <controls>...</controls>
   <datasets>
      <dataset name="input" frequency="${coord:days(1)}" initial-instance="${startTime}" timezone="${timeZoneDef}">
         <uri-template>${triggerDatasetDir}</uri-template>
      </dataset>
   </datasets>
   <input-events>
         <data-in name="sampleInput" dataset="input">
         <instance>${startTime}</instance>
      </data-in>
   </input-events>
   <action>
      <workflow>
         <app-path>${workflowAppPath}</app-path>
      </workflow>
   </action>     
</coordinator-app>

运行Oozie协调员工作

类似于Oozie工作流作业,协调器作业需要Job.properties文件,并且需要在HDFS中加载coordinator.xml文件。
要从Oozie命令行界面运行Oozie协调器作业,请在确保作业的情况下发出以下命令,同时确保作业.properties文件是本地可访问的:

$oozie job config sampleCoordinator/job.properties run

提交作业后,协调器存储在Oozie对象数据库中。
在提交时,Oozie返回一个标识符,以使我们能够监控和管理协调员 - Job:0000001-00000001234567-Oozie-C。

要检查此作业的状态,请运行命令

oozie job -info 0000001-00000001234567-oozie-C