Oozie学习(定时任务)

一、Oozie的定时任务方式

1.1 官方定义

image

1.2 corntab方式

image

image

 

二、编写定时任务

2.1 代码编写

job.properties

nameNode=hdfs://hh:8020
jobTracker=hh:8032
queueName=qcpj_access_log_queue
examplesRoot=accessLogAnalyze

# workflow参数为 oozie.wf.application.path
oozie.coord.application.path=${nameNode}/oozie/workflows/qcpj/${examplesRoot}

start=2019-08-05T23:00+0800
end=2099-08-05T23:30+0800
workflowAppUri=${nameNode}/oozie/workflows/qcpj/${examplesRoot}

workflow.xml

<workflow-app name='qcpj_accessLog_analyze' xmlns="uri:oozie:workflow:0.3">
    <start to="accessLogAnalyze"/>

    <!-- 分析accessLog日志数据 -->
    <action name="accessLogAnalyze">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <main-class>com.bnuz.qcpj.mr.accessLogAnalyze.AccessLogRunner</main-class>
        </java>
        <ok to="eventCountRunner"/>
        <error to="kill"/>
    </action>

    <!-- 统计相关事件数量 -->
    <action name="eventCountRunner">
        <java>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <main-class>com.bnuz.qcpj.mr.accessLogEventCount.EventCountRunner</main-class>
        </java>
        <ok to="end"/>
        <error to="kill"/>
    </action>

    <kill name="kill">
        <message>mapreduce failed, error message:${wf:errorMessage(wf:lastErrorNode())}</message>
    </kill>
    <end name="end"/>
</workflow-app>

coordinator.xml

  • 修改时区timezone
  • 修改版本xmlns
<coordinator-app name="qcpj_access_log_analyze_coor" frequency="${coord:minutes(5)}" start="${start}" end="${end}" timezone="GMT+0800" 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>
			</configuration>
     		</workflow>
	</action>
</coordinator-app>

2.2 任务操作命令

(以下命令在任务目录下执行,作业Id可以在Oozie Web主页中查看)

# 提交任务(提交后为PRE状态)
oozie job -oozie http://hh:11000/oozie -config job.properties -submit

# 开始任务(指定jobId,PRE -> RUN)
oozie job -oozie http://hh:11000/oozie -start 14-20090525161321-oozie-joe

# 暂停任务(RUN -> SUSPEND)
oozie job -oozie http://hh:11000/oozie -suspend 14-20090525161321-oozie-joe

# 恢复任务(SUSPEND -> RUN)
oozie job -oozie http://hh:11000/oozie -resume 14-20090525161321-oozie-joe

# 重新运行工作流(仅限工作流)
oozie job -oozie http://hh:11000/oozie -config job.properties -rerun 14-20090525161321-oozie-joe -D oozie.wf.rerun.failnodes=false

# 重新运行定时任务(action表示如下图 future-1)
oozie job -oozie http://hh:11000/oozie -config job.properties -rerun 14-20090525161321-oozie-joe -refresh -action 1-4

# 提交并启动任务(RUN状态)
oozie job -oozie http://hh:11000/oozie -config job.properties -run

# 杀死指定任务(KILL状态)
oozie job -oozie http://hh:11000/oozie -kill 0000358-190502173832787-oozie-hado-C


# 查看工作流信息
oozie job -oozie http://hh:11000/oozie -config job.properties -info 14-20090525161321-oozie-joe

# 查看工作流日志
oozie job -oozie http://hh:11000/oozie -config job.properties -log 14-20090525161321-oozie-joe

# 

future-1

image

 

三、参考