
# Oozie应用开发简介
#### Oozie简介
Oozie是一个用来管理Hadoop job任务的工作流引擎，Oozie流程基于有向无环图（Directed Acyclical Graph）来定义和描述，支持多种工作流模式及流程定时触发机制。易扩展、易维护、可靠性高，与Hadoop生态系统各组件紧密结合。
Oozie流程的三种类型：
- Workflow 描述一个完整业务的基本流程。
  
- Coordinator Coordinator流程构建在Workflow流程之上，实现了对Workflow流程的定时触发、按条件触发功能。
  
- Bundle Bundle流程构建在Coordinator流程之上，提供对多个Coordinator流程的统一调度、控制和管理功能。
  
Oozie主要特点：
- 支持分发、聚合、选择等工作流程模式。
- 与Hadoop生态系统各组件紧密结合。
- 流程变量支持参数化。
- 支持流程定时触发。
- 自带一个Web Console，提供了流程查看、流程监控、日志查看等功能。
 
 #### Oozie应用开发常见概念
- **流程定义文件**
  描述业务逻辑的XML文件，包括"workflow.xml"、"coordinator.xml"、"bundle.xml"三类，最终由Oozie引擎解析并执行。
  
- **流程属性文件**
  流程运行期间的参数配置文件，对应文件名为"job.properties"，每个流程定义有且仅有一个该属性文件。
  

- **keytab** **文件**
  存放用户信息的密钥文件。在安全模式下，应用程序采用此密钥文件进行API方式认证。
  
- **Client**
  客户端直接面向用户，可通过Java API、Shell API、 REST API或者Web UI访问Oozie服务端。
  
 
