oozie安装好了之后,需要测试oozie的功能是否完整好使,官方已经给我们带了各种测试案例,我们可以通过官方提供的各种案例来对oozie进行调度
oozie自带了各种案例,我们可以使用oozie自带的各种案例来作为模板,所以我们这里先把官方提供的各种案例给解压出来
cd /export/servers/oozie-4.1.0-cdh5.14.0 tar -zxf oozie-examples.tar.gz在任意地方创建一个oozie的工作目录,以后调度任务的配置文件全部放到oozie的工作目录当中去 我这里直接在oozie的安装目录下面创建工作目录
cd /export/servers/oozie-4.1.0-cdh5.14.0 mkdir oozie_works任务模板以及工作目录都准备好了之后,我们把shell的任务模板拷贝到我们oozie的工作目录当中去)
cd /export/servers/oozie-4.1.0-cdh5.14.0 cp -r examples/apps/shell/ oozie_works/就是shell文件夹下面的东西全部拷贝到刚才创建的oozie_works目录里去
注意:这个脚本一定要是在我们oozie工作路径下的shell路径下的位置
#!/bin/bash echo "hello world" >> /export/servers/hello_oozie.txt修改job.properties
cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/shell vim job.properties(这里jobTracker我的默认是8021,但是它这里是8032我先用它的试试)
nameNode=hdfs://node01:8020 jobTracker=node01:8032 queueName=default examplesRoot=oozie_works oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell EXEC=hello.sh修改workflow.xml
vim workflow.xml要改动的地方有<exec>${EXEC}</exec>,还有下面的okto那里改成<ok to="end"/>
<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>注意:上传的hdfs目录为/user/root,因为我们hadoop启动的时候使用的是root用户,如果hadoop启动的是其他用户,那么就上传到 /user/其他用户
cd /export/servers/oozie-4.1.0-cdh5.14.0 hdfs dfs -put oozie_works/ /user/root(先把oozie开了 bin/oozied.sh start ) 通过oozie的命令来执行调度任务
cd /export/servers/oozie-4.1.0-cdh5.14.0 bin/oozie job -oozie http://hadoop03:11000/oozie -config oozie_works/shell/job.properties -run(我执行的时候报了这个错误)
百度搜找到了如下解决办法: https://stackoverflow.com/questions/44839025/oozie-connection-exception-has-occurred-java-net-connectexception-connection
但是我的环境变量配置是完好的,这时候我想到了,我安装oozie是在hadoop01上,但是开的端口是在hadoop03上,会不会是配置安装的位置出了错误?
最后发现不是,因为我在hadoop01上安装的,所以把hadoop03换成hadoop01就行了。
从监控界面可以看到任务执行成功了
查看hadoop的19888端口,我们会发现,oozie启动了一个MR的任务去执行shell脚本 http://hadoop01:19888/jobhistory
可以看到运行成功了! 66666666666666666!