OOZIE - noonecare/opensourcebigdatatools GitHub Wiki
概览
Oozie 就是管理 workflow ,调度 workflow 的工具。
Oozie 对于 hadoop 的支持非常好,考虑到 ETL 的放放面面。对于做 hadoop 集群相关的 etl ,比较有帮助。
重要概念
- workflow ,就是一些列动作(action)组合在一起。
- coordinator, 类似于 crontab 命令,当时间或者数据事件满足时,触发 workflow。
简单实用
- 提交
oozie job -run -config job.properties
如果 job.properties 文件中包含 oozie.coord.application.path: 提交 oozie.coord.application.path 指定的 coord-application
如果 job.properties 文件中包含 oozie.wf.application.path : 提交 oozie.wf.application.path 指定的 wf-application
- 查询
oozie job -info job-id
- webUI
通过 Hue 可以从 WebUI 查询 job 的执行情况。
- 写 workflow.xml 和 coordinator.xml
这是最重要的一部分,见具体实例。
踩过的坑,以及使用小窍门
-
写 wf-application 的 xml 文件Inteilj 如何自动补全 tag 名称 ?
下载 oozie-client jar 包,然后指明 uri:oozie:shell-action:0.2, uri:oozie:workflow:0.4 等等 namespace 对应的 dtd 文件(都在 oozie-client jar 包中)。Intelij 即可自动补全 tag 名。这样做之后,写 workflow, coordinator 就非常简单,不再需要记很多东西。
-
在 coordinator.xml 中指明了 timezone="GTM+0800" ,但是 oozie 仍然使用 UTC 时间?
-
在 coordinator.xml 中命名设置了 frequency=10, 但是 coordinator 却在一个 workflow instance 结束之后,立即启动下一个 worflow instance ?
这是在执行之前没有执行的 workflow instance, 比如 start-instance 是 6 点, frequency 为 30 分钟,但是是在 7 点提交的。那么 7 点会连续执行 6, 6:30, 7:00 的 workflow instance,之后 7 点半,才会每隔 30 分钟执行一个 workflow instance。
-
执行 shell 命令时,找不到文件?
执行 shell action ,所有需要的文件都必须使用 file tag 指明需要的资源在 hdfs 中的路径。