Oozie是一个开源的Apache项目,提供Hadoop任务的调度和管理。Oozie不仅可以管理MapReduce任务,还可以管理Pig、Hive、Sqoop、Spark等任务。
Oozie是一个Java Web应用,部署在Tomcat服务器上,启动部署了Oozie的Tomcat后,就可以在Oozie的客户端使用命令提交相关的工作流任务了。
在大数据工作环境中,有时需要把多个任务(如MR任务、Hive任务、Pig任务、Spark任务等)进行一定的逻辑整合,从而形成工作流。当然,把多个任务进行整合也可以使用脚本的形式(如在Linux中使用cron表达式等),但是,这样的脚本比较难维护,同时,多个任务其监控也难以整合。
但使用Oozie就不会有这样的问题,Oozie使用标准的XML文件来定义大数据工作流,文件简单易理解,搭配Oozie特有的工作流监控(Tomcat Web平台界面)让用户可以很直观地看到工作流中各个任务的状态以及总任务的状态。
简单地说,Oozie就是一个工作流引擎,只不过它是一个基于Hadoop的工作流引擎。在实际工作中,遇到对数据进行一连串的操作的时候很实用,不需要自己写一些流程处理代码,只需要定义好各个Action,然后把它们串在一个工作流里面,设置好触发条件就可以自动执行了。对于复杂的大数据分析工作非常有用。
Oozie有两个主要的组件。
- ·工作流定义组件(Oozie Workflow):一系列Action的列表(在workflow.xml中定义)。
- ·调度器组件(Oozie Coordinator):可调度的WorkFlow(在coordinator.xml中定义)。
其中,Action是指一个任务(节点),比如MapReduce任务、Pig任务、Hive任务等;而WorkFlow就是定义了一个DAG的任务图,而调度器则是可以决定在某个时间或符合某种条件来执行已经定义的DAG任务图的组件。
Oozie Server安装后在安装的节点上面即可使用Oozie Client上的所有功能(即提交任务)。如果想要在其他节点上也使用Oozie来提交任务,那么只要在那些节点上安装Oozie Client即可。