oozie bundle 调用多个coordinator

bundle job可以绑定多个coordinator.

语法:

<bundle-app name=[NAME]  xmlns=‘uri:oozie:bundle:0.1‘>
  <controls>
       <kick-off-time>[DATETIME]</kick-off-time>    #运行时间
  </controls>
   <coordinator name=[NAME] >
       <app-path>[COORD-APPLICATION-PATH]</app-path> # coordinator.xml所在目录
          <configuration>                 #传给coordinator应用的参数
            <property>
              <name>[PROPERTY-NAME]</name>
              <value>[PROPERTY-VALUE]</value>
            </property>
            ...
         </configuration>
   </coordinator>
   ...
</bundle-app>  

官网给出的例子(绑定两个coordinator):

<bundle-app name=‘APPNAME‘ xmlns:xsi=‘http://www.w3.org/2001/XMLSchema-instance‘ xmlns=‘uri:oozie:bundle:0.1‘>
  <controls>
       <kick-off-time>${kickOffTime}</kick-off-time>
  </controls>
   <coordinator name=‘coordJobFromBundle1‘ >
       <app-path>${appPath}</app-path>
       <configuration>
         <property>
              <name>startTime1</name>
              <value>${START_TIME}</value>
          </property>
         <property>
              <name>endTime1</name>
              <value>${END_TIME}</value>
          </property>
      </configuration>
   </coordinator>
   <coordinator name=‘coordJobFromBundle2‘ >
       <app-path>${appPath2}</app-path>
       <configuration>
         <property>
              <name>startTime2</name>
              <value>${START_TIME2}</value>
          </property>
         <property>
              <name>endTime2</name>
              <value>${END_TIME2}</value>
          </property>
      </configuration>
   </coordinator>
</bundle-app>

我们工作时的(简略版)bundle.xml:

<bundle-app name=‘APPNAME‘ xmlns:xsi=‘http://www.w3.org/2001/XMLSchema-instance‘
xmlns=‘uri:oozie:bundle:0.2‘>
    <coordinator name=‘coordJobFromBundle1‘ >
       <app-path>${appPath}</app-path>
   </coordinator>
   <coordinator name=‘coordJobFromBundle2‘ >
       <app-path>${appPath2}</app-path>
   </coordinator>

</bundle-app>

coordinator.xml:

<coordinator-app name="cron-coord" frequency="${coord:minutes(6)}" start="${start}"
end="${end}" timezone="UTC" xmlns="uri:oozie:coordinator:0.2">
    <action>
        <workflow>
            <app-path>${workflowAppUri}</app-path>
            <configuration>
                <property>
                    <name>jobTracker</name>
                    <value>${jobTracker}</value>
                </property>
                <property>
                    <name>nameNode</name>
                    <value>${nameNode}</value>
                </property>
                <property>
                    <name>queueName</name>
                    <value>${queueName}</value>
                </property>
                <property>
                    <name>mainClass</name>
                    <value>com.ocn.itv.rinse.ErrorCollectRinse</value>
                </property>
                <property>
                    <name>mainClass2</name>
                    <value>com.ocn.itv.rinse.UserCollectRinse</value>
                </property>
                <property>
                    <name>jarName</name>
                    <value>ocn-itv-spark-3.0.3-rc1.jar</value>
                </property>
            </configuration>
        </workflow>
    </action>
</coordinator-app>

workflow.xml:

<workflow-app  name="spark-example1" xmlns="uri:oozie:workflow:0.5">
    <start to="forking"/>
    <fork name="forking">
        <path start="firstparalleljob"/>
        <path start="secondparalleljob"/>
    </fork>
    <action name="firstparalleljob">
        <spark xmlns="uri:oozie:spark-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <master>yarn-cluster</master>
            <mode>cluster</mode>
            <name>Spark Example</name>
            <class>${mainClass}</class>
            <jar>${jarName}</jar>
            <spark-opts>${sparkopts}</spark-opts>
            <arg>${input}</arg>
        </spark >
        <ok to="joining"/>
        <error to="fail"/>
    </action>
    <action name="secondparalleljob">
         <spark xmlns="uri:oozie:spark-action:0.2">
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>
            </configuration>
            <master>yarn-cluster</master>
            <mode>cluster</mode>
            <name>Spark Example2</name>
            <class>${mainClass2}</class>
            <jar>${jarName}</jar>
            <spark-opts>${sparkopts}</spark-opts>
            <arg>${input}</arg>
        </spark >
        <ok to="joining"/>
        <error to="fail"/>
    </action>
    <join name="joining" to="end"/>
      <kill name="fail">
       <message>Action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
   <end name="end"/>
</workflow-app> 

job.properties

nameNode=hdfs://hgdp-001:8020
jobTracker=hgdp-001:8032
queueName=default
input=2017-05-09
hdfspath=user/root
examplesRoot=ocn-itv-oozie      #自定义全局目录
oozie.use.system.libpath=True    #是否启动系统lib库
sparkopts=--executor-memory 1G
start=2017-09-04T00:05+0800    #coordinator任务开始时间
end=2017-09-04T00:36+0800      #coordinator任务结束时间
start2=2017-09-01T00:06+0800
end2=2017-09-04T00:36+0800
oozie.libpath=${nameNode}/${hdfspath}/${examplesRoot}/lib/          #用户自定义lib库(存放jar包)
workflowAppUri=${nameNode}/${hdfspath}/${examplesRoot}/wf/spark/fork/
workflowAppUri2=${nameNode}/${hdfspath}/${examplesRoot}/wf/spark/single/  #coordinator定时调度对应的workflow.xml所在目录
appPath=${nameNode}/${hdfspath}/${examplesRoot}/cd/single/
appPath2=${nameNode}/${hdfspath}/${examplesRoot}/cd/single1/        #bundle调用对应的coordinator.xml所在目录
oozie.bundle.application.path=${nameNode}/${hdfspath}/${examplesRoot}/bd/bd1/    #bundle.xml所在目录
#一个bundle调用多个coordinator
时间: 2025-01-11 07:29:24

oozie bundle 调用多个coordinator的相关文章

工作流引擎Oozie(二):coordinator

1. 简介 coordinator是workflow的定时提交器,基于时间条件与数据生成触发(based on time and data triggers).简单点说,coordinator按所定义的时间周期进行轮询,若数据生成条件满足,则触发workflow任务:否则,则等待数据生成或跳过(调度策略由设置的超时时间决定). 2. 详解 coordinator-app <coordinator-app name="coord-demo" frequency="${co

oozie说明(本文参考多处,自己留看)

Oozie概述: Oozie是一个基于Hadoop工作流引擎,也可以称为调度器,它以xml的形式写调度流程,可以调度mr,pig,hive,shell,jar,spark等等.在实际工作中,遇到对数据进行一连串的操作的时候很实用,不需要自己写一些处理代码了,只需要定义好各个action,然后把他们串在一个工作流里面就可以自动执行了.对于大数据的分析工作非常有用. (以下介绍内容基于Oozie 4.1.0版本) Oozie有几个主要概念: workflow :工作流 ,顺序执行流程节点,支持for

Alex 的 Hadoop 菜鸟教程: 第20课 工作流引擎 Oozie

本文基于 Centos6.x + CDH5.x Oozie是什么 简单的说Oozie是一个工作流引擎.只不过它是一个基于Hadoop的工作流引擎,在实际工作中,遇到对数据进行一连串的操作的时候很实用,不需要自己写一些处理代码了,只需要定义好各个action,然后把他们串在一个工作流里面就可以自动执行了.对于大数据的分析工作非常有用 安装Oozie Oozie分为服务端和客户端,我现在选择host1作为服务端,host2作为客户端. 所以在host1上运行 yum install oozie 在h

消费者端的Spring JMS 连接ActiveMQ接收生产者Oozie Server发送的Oozie作业执行结果

一,介绍 Oozie是一个Hadoop工作流服务器,接收Client提交的作业(MapReduce作业)请求,并把该作业提交给MapReduce执行.同时,Oozie还可以实现消息通知功能,只要配置好消息服务器,Oozie Server就可以把作业的执行结果发送到消息服务器上,而Client只需要订阅其感兴趣的消息即可.具体的配置参考这篇文章:Oozie 使用ActiveMQ实现 JMS通知 由于Spring内置了JMS相关的服务,因此这里记录在Spring中如何配置消费者连接ActiveMQ,

Oozie工作流属性配置的方式与策略

本文原文出处: http://blog.csdn.net/bluishglc/article/details/46049817 Oozie工作流属性配置的三种方式 Oozie有三种方法可以给工作流提供属性属性配置: App部署文件夹根目录下的:config-default.xml 作业属性文件:job.properties 在命令行中指定属性:-Dkey=value Oozie工作流属性配置的策略(最佳实践) 坦率地讲,三种配置相互重叠,全部使用会使属性的配置过于分散,使得查找和定位属性变得繁琐

Oozie协作框架

Oozie协作框架 一:概述 1.大数据协作框架 2.Hadoop的任务调度 3.Oozie的三大功能 Oozie Workflow jobs Oozie Coordinator jobs Oozie Bundle 4.Oozie的架构 控制流节点 起始,分支,并发,汇合,结束 动作节点action 5.Oozie的实现 二:安装部署 1.上传 2.解压 3.配置Hadoop代理core-site.xml 4.启动Hadoop集群 5.解压hadooplib 将会生成:oozie-4.0.0-c

oozie 常用命令

1.验证wokflow.xmloozie validate /appcom/apps/hduser0401/mbl_webtrends/workflow.xml 2.提交作业,作业进入PREP状态 oozie job -oozie http://localhost:11000/oozie -config job.properties -submit job: 14-20090525161321-oozie-joe 3.执行已提交的作业 oozie job -oozie http://localh

工作流调度引擎---Oozie

Oozie使用教程 一.   Oozie简介 Apache Oozie是用于Hadoop平台的一种工作流调度引擎. 作用 - 统一调度hadoop系统中常见的mr任务启动hdfs操作.shell调度.hive操作等. - 使得复杂的依赖关系时间触发事件触发使用xml语言进行表达开发效率提高. - 一组任务使用一个DAG来表示,使用图形表达流程逻辑更加清晰. - 支持很多种任务调度,能完成大部分hadoop任务处理. - 程序定义支持EL常量和函数,表达更加丰富. 架构 访问 - 通过浏览器访问

1.1-1.4 hadoop调度框架和oozie概述

一.hadoop调度框架 Linux Crontab Azkaban https://azkaban.github.io/ Oozie http://oozie.apache.org/ Zeus(阿里的) https://github.com/michael8335/zeus2 二.oozie架构 1.oozie 一个基于工作流引擎的开源框架,是由Cloudera公司贡献给Apache的,它能够提供对Hadoop MapReduce和Pig Jobs的任务调度与协调. Oozie需要部署到Jav