Oozie是一个基于Hadoop的调度器,它可以用来管理和协调Hadoop作业、Pig作业、Hive作业、Shell脚本等。Oozie以XML的形式编写调度流程,支持有向无环图(DAG)和Hierarchical Path-Defined Language(HPDL)两种工作流模型。
安装命令
sudo yum install -y oozie
Oozie主要通过创建Workflow、Coordinator和Bundle Job来实现作业调度。
<workflow-app xmlns="uri:oozie:workflow:0.2" name="wf-example">
<start to="hive-node"/>
<action name="hive-node">
<hive>
<job-tracker>jobtracker</job-tracker>
<name-node>hdfs://localhost:9000</name-node>
<script>hive-script.sql</script>
</hive>
<ok to="end"/>
<error to="fail"/>
</action>
<kill name="fail">
<message>Job failed, error message[${
wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<end/>
</workflow-app>
DAG(有向无环图)是Oozie工作流的基本模型,它允许用户创建具有分支和合并的复杂工作流。HPDL(层次路径定义语言)是Oozie的另一种工作流模型,它使用路径定义来描述工作流中各个任务的执行顺序。
参数化工作流
使用 Oozie 的 XML 格式定义工作流,并在其中添加参数化元素。
<workflow-app xmlns="uri:oozie:workflow:0.2" name="example-workflow">
<start to="param-node"/>
<action name="param-node">
<hive>
<job-tracker>jobtracker</job-tracker>
<name-node>hdfs://localhost:9000</name-node>
<script>${
param_value}</script>
</hive>
<ok to="end"/>
<error to="error"/>
</action>
<kill name="error">
<message>Job failed, error message[${
wf:errorMessage(wf:lastErrorNode(wf:flowExecutionNode))}]</message>
</kill>
<end/>
</workflow-app>
使用 Oozie 的命令行工具 oozie 提交工作流。
oozie -submit -config example-workflow.xml -param param_value=Hello, World!
- Oozie官方文档:https://oozie.apache.org/docs/v4.2.0/
- 慕课网Oozie教程:https://www.imooc.com/course/22365
- 实验楼Oozie教程:https://www.shiyanlou.com/courses/203