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]保存执行任务的名称

最新文章

  1. ES6箭头函数与展开运算符
  2. Cucumber(一): Preparation
  3. AT常见问题
  4. html、css 【珍藏】
  5. iOS view 颜色渐变
  6. Install wget for mac
  7. iOS 利用长按手势移动 Table View Cells
  8. MongoDB空间整理
  9. C# 之 System.Diagnostics.Process.Start的妙用
  10. MVC框架是什么
  11. 传智播客8月C/C++基础班开班
  12. oracle 使用sql获取数据库表,表的字段
  13. 高并发非自增ID如何设计?
  14. Openjudge-计算概论(A)-完美立方
  15. requests库写接口测试框架初学习
  16. 使用vue+elementUI+springboot创建基础后台增删改查的管理页面--(1)
  17. HTTP协议,Http 常用状态码
  18. js数字货币格式互转
  19. Chapter5 生长因子、受体和癌症
  20. dump_stack的简单使用 【转】

热门文章

  1. Python编程使用PyQT制作视频播放器
  2. WKWebView单个界面添加请求头
  3. map中entrySet和KeySet的区别
  4. build hadoop, spark, hbase cluster
  5. getopts以参数形式执行diag
  6. checkbox全选/取消全选
  7. Centos7 安装编译nginx-1.9.6过程
  8. uniGUI页面标题和页面背景的更改(03)
  9. 读取json文件
  10. 使用MyCat实现MySQL读写分离