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 时间?

    这是运维没有配好,要修改 oozie 的配置文件

  • 在 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 中的路径。