2-10 就业课(2.0)-oozie:4、通过oozie执行shell脚本
oozie的配置文件
job.properties:里面主要定义的是一些key,value对,定义了一些变量,这些变量往workflow.xml里面传递
workflow.xml :workflow的配置文件,里面写的是一个或者多个action,一个action就代表我们一个需要执行的任务
===========================================
4、oozie的使用
4.1、使用oozie调度shell脚本
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脚本
cd /export/servers/oozie-4.1.0-cdh5.14.0
vim oozie_works/shell/hello.sh
注意:这个脚本一定要是在我们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
nameNode=hdfs://node01:8020
jobTracker=node01:8032[a1]
queueName=default[a2]
examplesRoot=oozie_works[a3]
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell
截图一张,因为该行在手机端上显示错误,下同:
EXEC=hello.sh[a4]
修改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>
第六步:上传我们的调度任务到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
第七步:执行调度任务
通过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
从监控界面可以看到我们的任务执行成功了
查看hadoop的19888端口,我们会发现,oozie启动了一个MR的任务去执行我们的shell脚本
[a1]在hadoop2当中,jobTracker这种角色已经没有了,只有resourceManager,这里给定resourceManager的IP及端口即可
[a2]任务提交的队列名称,默认或者随便更改都可以
[a3]指定oozie的工作目录
[a4]保存执行任务的名称
最新文章
- ES6箭头函数与展开运算符
- Cucumber(一): Preparation
- AT常见问题
- html、css 【珍藏】
- iOS view 颜色渐变
- Install wget for mac
- iOS 利用长按手势移动 Table View Cells
- MongoDB空间整理
- C# 之 System.Diagnostics.Process.Start的妙用
- MVC框架是什么
- 传智播客8月C/C++基础班开班
- oracle 使用sql获取数据库表,表的字段
- 高并发非自增ID如何设计?
- Openjudge-计算概论(A)-完美立方
- requests库写接口测试框架初学习
- 使用vue+elementUI+springboot创建基础后台增删改查的管理页面--(1)
- HTTP协议,Http 常用状态码
- js数字货币格式互转
- Chapter5 生长因子、受体和癌症
- dump_stack的简单使用 【转】