hadoop上的工作流调度——oozie

Hadoop上的工作流调度

Oozie是一个管理Apache Hadoop任务的工作流调度系统。
Oozie工作流任务是有向无环图。
Oozie协调任务是由时间(频率)和数据是否可获得来触发的oozie工作流。

Oozie是一个可扩展的、可靠的和可延伸的系统。

oozie主要由以下几部分组成:

coordinator.xml和job.properties和workflow.xml。

coordinator.xml:定时调度频率

<coordinator-app name="job_name"
	frequency="${coord:days(1)}" start="${job_start}" end="${job_end}"
	timezone="GMT+08:00" xmlns="uri:oozie:coordinator:0.2">
	<controls>
	    <timeout>2</timeout>
		<concurrency>1</concurrency>
	</controls>

    <action> 
        <workflow>
            <app-path>${application_path}</app-path>
            <configuration>
                <property>
                    <name>sqoop_import_path</name>
                    <value>${coord:dataOut('logData')}</value>
                </property>
                <property>
                    <name>nominalformateDate</name>
                    <value>${coord:formatTime(coord:dateOffset(coord:nominalTime(), -1, 'DAY'), "yyyyMMdd")}</value>
                </property>
            </configuration>
        </workflow>
    </action>
</coordinator-app>

job.properties:起止时间

hdfs_sqoop_tmp=${namenode_address}/
hdfs_address_prefix=/apps

#coordinator config
job_start=2016-07-15T05:00+0800
job_end=2099-12-31T07:00+0800


#shell
dbTest=test.sh


application_path=${hdfs_address_prefix}/

oozie.coord.application.path=${application_path}
workflow.xml:具体调度的action

<workflow-app xmlns="uri:oozie:workflow:0.2" name="job_name">
   <start to="clean/>
   
   <action name="clean">
        <fs>   
            <delete path="${sqoop_import_path}"/>
        </fs>
        <ok to="dbtTest"/>
        <error to="fail"/>
    </action>
	   
	   <action name="dbtTest">

	   </action>

    <kill name="fail">
        <message></message>
    </kill>
    <end name="end"/>
</workflow-app>

具体的执行语句:

oozie  -Dheader:j_username=$j_username -Dheader:j_password=$j_password job -Dnamenode_address=$namenode_address -Djobtracker_address=$jobtracker_address -Dmapred_job_queue_name=$mapred_job_queue_name -Dpg_connection=$pg_connection -Ddbusername=$pg_username -Ddbpassword=$pg_password --oozie $oozie_url -config  /appcom/apps/test.properties -auth xxx -run -doas $doas_user

你可能感兴趣的:(apache,workflow,oozie)