Oozie学习笔记

Oozie:Hadoop平台开源的工作流调度引擎,管理Hadoop作业,由server和client两个组件组成
运行java servlet的web程序

1.特点:
1)统一调度Hadoop系统中的mr任务启动,hdfs操作,shell调度,hive操作
2)一组任务使用DAG来表示
3)复杂的依赖关系,时间触发,事件触发用xml表示
4)程序支持用ETL常量和函数
5)支持很多种任务调度,能完成大部分Hadoop任务处理

2.架构图


3.安装方式:手动安装,Cloudera Manager安装

4.Oozie Web控制台
1)解压ext-2.2到/var/lib/oozie目录下 unzip ext-2.2.zip -d /var/lib/oozie/
2)Oozie服务中配置启用web控制台(Cloudera Manager中的配置tab)
3)保存,重启oozie服务

5.Oozie配置
1)节点内存配置
2)oozie.service.callablequeueservice.callable.concurrency(节点并发)
3)oozie.service.callablequeueservice.queue.size(队列大小)
4)oozie.service.ActionService.executor.ext.classes(扩展)

6.Oozie共享库:/user/oozie/share/lib

7.web管理地址: http://oozie_host_ip:11000/oozie/

8.oozie管理
– 任务列表查看
– 任务状态查看
– 流程返回信息
– 节点信息查看
– 流程图信息
– 日志查看
– 系统信息查看和配置

9.Oozie CLI 命令
• 启动任务:
– oozie job -oozie http://ip:11000/oozie/ -config job.properties –run
注:生成任务id并返回,启动任务=提交任务+开始任务
• 停止任务:
– oozie job -oozie http://ip:11000/oozie/ -kill 0000002-150713234209387-oozie-oozi-W
• 提交任务:
– oozie job -oozie http://ip:11000/oozie/ -config job.properties –submit
• 开始任务:
– oozie job -oozie http://ip:11000/oozie/ -config job.properties –start 0000003-150713234209387-oozie-oozi-W
• 查看任务执行情况:
– oozie job -oozie http://ip:11000/oozie/ -config job.properties –info 0000003-150713234209387-oozie-oozi-W

10.Job配置 job.properties
nameNodehdfs地址
jobTrackejobTracker地址
queueNameoozie队列( default)
examplesRoot全局目录( examples)
oozie.usr.system.libpath是否加载用户lib目录( true/false)
oozie.libpath用户lib库
oozie.wf.appication.pathoozie流程所在hdfs地址( workflow.xml)
user.name当前用户
coordinator:
oozie.coord.application.path
coordinator.xml地址
bundle:
oozie.bundle.application.path
bundle.xml地址

11.WorkFlow配置 workflow.xml
Shell节点 --workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.3" name="shell-wf">
<start to="shell-node"/>
<action name="shell-node">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>echo</exec>
<argument>hi shell in oozie</argument>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>

12.EL函数
– 基本的EL函数
String firstNotNull(String value1, String value2)
• String concat(String s1, String s2)
String replaceAll(String src, String regex, String replacement)
String appendAll(String src, String append, String delimeter)
• String trim(String s)
String urlEncode(String s)
• String timestamp()
String toJsonStr(Map) (since Oozie 3.3)
String toPropertiesStr(Map) (since Oozie 3.3)
String toConfigurationStr(Map) (since Oozie 3.3)
– WorkFlow EL
• String wf:id() – 返回当前workflow作业ID
• String wf:name() – 返回当前workflow作业NAME
• String wf:appPath() – 返回当前workflow的路径
• String wf:conf(String name) – 获取当前workflow的完整配置信息
• String wf:user() – 返回启动当前job的用户
• String wf:callback(String stateVar) – 返回结点的回调URL,其中参数为动作指定的退出状态
• int wf:run() – 返回workflow的运行编号,正常状态为0
• Map wf:actionData(String node) – 返回当前节点完成时输出的信息
• int wf:actionExternalStatus(String node) – 返回当前节点的状态
• String wf:lastErrorNode() – 返回最后一个ERROR状态推出的节点名称
• String wf:errorCode(String node) – 返回指定节点执行job的错误码,没有则返回空
• String wf:errorMessage(String message) – 返回执行节点执行job的错误信息,没有则返回空
– HDFS EL
• boolean fs:exists(String path)
• boolean fs:isDir(String path)
• long fs:dirSize(String path) – 目录则返回目录下所有文件字节数;否则返回-1
• long fs:fileSize(String path) – 文件则返回文件字节数;否则返回-1
• long fs:blockSize(String path) – 文件则返回文件块的字节数;否则返回-1

13.节点
– A、流程控制节点
• start – 定义workflow开始
• end – 定义workflow结束
• decision – 实现switch功能
<decision name="[NODE-NAME]">
<switch>
<case to="[NODE_NAME]">[PREDICATE]</case>
...
<case to="[NODE_NAME]">[PREDICATE]</case>
<default to="[NODE_NAME]" />
</switch>
</decision>

• sub-workflow – 调用子workflow
• kill – 杀死workflow
• fork – 并发执行workflow
<fork name="[FORK-NODE-NAME]">
<path start="[NODE-NAME]" />
...
<path start="[NODE-NAME]" />
</fork>
• join – 并发执行结束(与fork一起使用)
<join name="[JOIN-NODE-NAME]" to="[NODE-NAME]" />

– B、动作节点
• shell
• java
• fs
• MR
• hive
• sqoop
1)shell动作节点:
---job.properties
nameNode=hdfs://node1:8020
jobTracker=node1:8032
queueName=default
examplesRoot=examples
oozie.wf.application.path=${nameNode}/user/workflow/oozie/shell
--workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.3" name="shell-wf">
<start to="shell-node"/>
<action name="shell-node">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>echo</exec>
<argument>hi shell in oozie</argument>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
2)Java节点
– job.properties
nameNode=hdfs://node1:8020
jobTracker=node1:8032
queueName=default
examplesRoot=examples
oozie.usr.system.libpath=true
oozie.libpath=${nameNode}/user/workflow/lib/lib4java
oozie.wf.application.path=${nameNode}/user/workflow/oozie/java
workflow.xml
--workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.3" name="mr-wc-wf">
<start to="mr-node"/>
<action name="mr-node">
<java>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<prepare>
<delete path="${nameNode}/user/path" />
<mkdir path="${nameNode}/user/path" />
</prepare>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<main-class>com.pagename.classname</main-class>
</java>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end name="end"/>
</workflow-app>
3)impala节点
---job.properties
nameNode=hdfs://node1:8020
jobTracker=node1:8032
queueName=default
examplesRoot=examples
oozie.usr.system.libpath=true
oozie.libpath=${namenode}/user/${user.name}/workflow/impala/lib
oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/impala
--workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.4" name="impala-wf">
<start to="shell-node"/>
<action name="shell-node">
<shell xmlns="uri:oozie:shell-action:0.1">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>impala-shell</exec>
<argument>-i</argument>
<argument>node2</argument>
<argument>-q</argument>
<argument>invalidate metadata</argument>
<capture-output/>
</shell>
......
</action>
.......
</workflow-app>
4)fs节点
– workflow.xml
<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.5">
...
<action name="[NODE-NAME]">
<fs>
<delete path='[PATH]'/>
<mkdir path='[PATH]'/>
<move source='[SOURCE-PATH]' target='[TARGET-PATH]'/>
<chmod path='[PATH]' permissions='[PERMISSIONS]' dir-files='false' />
<touchz path='[PATH]' />
<chgrp path='[PATH]' group='[GROUP]' dir-files='false' />
</fs>
<ok to="[NODE-NAME]"/>
<error to="[NODE-NAME]"/>
</action>
</workflow-app>l
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值