Oozie:Hadoop平台开源的工作流调度引擎,管理Hadoop作业,由server和client两个组件组成
运行java servlet的web程序
官网: https://oozie.apache.org/
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
nameNode |
hdfs地址 |
jobTracke |
jobTracker地址 |
queueName |
oozie队列( default) |
examplesRoot |
全局目录( examples) |
oozie.usr.system.libpath |
是否加载用户lib目录( true/false) |
oozie.libpath |
用户lib库 |
oozie.wf.appication.path |
oozie流程所在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
${jobTracker}
${nameNode}
mapred.job.queue.name
${queueName}
echo
Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
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功能
[PREDICATE]
...
[PREDICATE]
• sub-workflow – 调用子workflow
• kill – 杀死workflow
• fork – 并发执行workflow
...
• join – 并发执行结束(与fork一起使用)
– 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
${jobTracker}
${nameNode}
mapred.job.queue.name
${queueName}
echo
Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
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
${jobTracker}
${nameNode}
mapred.job.queue.name
${queueName}
com.pagename.classname
Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]
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
${jobTracker}
${nameNode}
mapred.job.queue.name
${queueName}
impala-shell
......
.......
4)fs节点
– workflow.xml
...
l