-
1.解压官方提供的调度案例
cd /export/servers/oozie-4.1.0-cdh5.14.0 tar -zxf oozie-examples.tar.gz
-
2.创建工作目录
在任意地方创建一个oozie的工作目录,以后调度任务的配置文件全部放到oozie的工作目录当中去
cd /export/servers/oozie-4.1.0-cdh5.14.0 mkdir oozie_works
-
3.拷贝任务模板到工作目录当中去
cd /export/servers/oozie-4.1.0-cdh5.14.0 cp -r examples/apps/shell/ oozie_works/
-
4.随意准备一个shell脚本
cd /export/servers/oozie-4.1.0-cdh5.14.0 vim oozie_works/shell/hello.sh
#!/bin/bash echo "hello world" >> /export/servers/hello_oozie.txt #注意:这个脚本一定要是在oozie工作路径下的shell路径下的位置
-
5.修改模板下的配置文件
修改job.properties
cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/shell vim job.properties
nameNode=hdfs://node01:8020 # 在hadoop2当中,jobTracker这种角色已经没有了,只有resourceManager,这里给定resourceManager的IP及端口即可 jobTracker=node01:8032 # 任务提交的队列名称,默认或者随便更改都可以 queueName=default # 指定oozie的工作目录 examplesRoot=oozie_works oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell # 保存执行任务的名称 EXEC=hello.sh
修改workflow.xml
vim workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf"> <start to="shell-node"/> <action name="shell-node"> <shell xmlns="uri:oozie:shell-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> <exec>${EXEC}</exec> <!-- <argument>my_output=Hello Oozie</argument> --> <file>/user/root/oozie_works/shell/${EXEC}#${EXEC}</file> <capture-output/> </shell> <ok to="end"/> <error to="fail"/> </action> <decision name="check-output"> <switch> <case to="end"> ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'} </case> <default to="fail-output"/> </switch> </decision> <kill name="fail"> <message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message> </kill> <kill name="fail-output"> <message>Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message> </kill> <end name="end"/> </workflow-app>
-
6.上传调度任务到hdfs上面去
注意:上传的hdfs目录为/user/root,因为我们hadoop启动的时候使用的是root用户,如果hadoop启动的是其他用户,那么就上传到/user/其他用户
cd /export/servers/oozie-4.1.0-cdh5.14.0 hdfs dfs -put oozie_works/ /user/root
-
7.执行调度任务
通过oozie的命令来执行调度任务
cd /export/servers/oozie-4.1.0-cdh5.14.0 bin/oozie job -oozie http://node03:11000/oozie -config oozie_works/shell/job.properties -run
从监控界面可以看到我们的任务执行成功了