Oozie-简介及部署

1、Oozie简介

1.1、Oozie简介

现实业务中处理数据时不可能只包含一个MR操作,一般都是多个MR,并且中间还可能包含多个Java或HDFS,甚至是shell的操作,利用Oozie可以完成这些任务。

实际上Oozie不是仅用来配置多个MR工作流的,它可以是各种程序夹杂在一起的工作流,比如执行一个MR1后,接着执行一个java脚本,再执行一个shell脚本,接着是Hive脚本,然后又是Pig脚本,最后又执行了一个MR2,使用Oozie可以轻松完成这种多样的工作流。使用Oozie时,若前一个任务执行失败,后一个任务将不会被调度。

Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流,同时Oozie还是一个Java web程序,运行在Java Servlet容器中,如Tomcat中。Oozie以action为基本任务单元,可以将多个action构成一个DAG图,(有向五环图Direct Acyclic Graph)的模式进行运行。Oozie工作流通过HPDL(一种通过XML自定义处理的语言)来构造Oozie的工作流。一个Oozie服务器主要包括四个服务:Oozie Workflow,Oozie Coordinator,Oozie Bundle和Oozie SLA(Oozie服务器等级协定)。
a、Oozie Workflow:该组件用于定义和执行一个特定顺序的mapreduce,hive和pig作业。
b、Oozie Coordinator:该组件用户支持基于事件,系统资源存在性等条件的workflow的自动化执行。
c、Oozie Bundle:该引擎可以定义和执行“一束”应用,从而提供一个批量化的方法,将一组Coordinator应用程序一起进行管理。
d、Oozie服务器等级协定(Service Level Agreement,SLA):该组件支持workflow应用程序执行过程的记录跟踪。

1.2、Oozie工作流介绍

Oozie的四大组件服务分别是:workflow,coordinator,boundle和sla。启动sla是作为监控服务协议的一个组件,workflow定义Ooize的基本工作流,coordinator定义定时(或者是根据其他资源指标)运行的workflow任务。bundle是将多个coordinator作为一个组件一起管理。也就是说workflow是oozie中最基本的一个服务组件。三大服务的关系是:bundle包含多个coordinator,coordinator包含一个workflow,workflow定义具体的action动作。
workflow使用hadoop流程定义语言(hadoop process defination language,hPDL)来描述工作流,hPDL是类似xml语言的一种相当简介的定义类语言,使用有限数目的流控制节点和动作节点来描述workflow,也就是说workflow有两大类节点构成:工作流控制节点和动作节点。其中工作流控制节点是workflow本身提供的一种控制workflow工作流执行路径的方法,不可以自定义,动作节点是具体的操作方法,用户可以自定义。
workflow工作流的声明周期:
a、PREP,一个工作流第一次创建就处于PREP状态,表示工作流已经创建,但是还没有运行。
b、RUNNIG,当一个已经被创建的工作流job开始执行的时候,就处于RUNNING状态。它不会达到结束状态,只能因为出错而结束或者被挂起。
c、SUSPENDED,一个RUNNING状态的工作流Job会变成SUSPENDED状态,而且它会一直处于该状态,除非这个工作流Job被重启开始执行或者被杀死。
d、SUCCESSEDED,当一个RUNNING状态的工作流Job达到了end节点,他就变成了SUCCESSEDED最终完成状态。
e、KILLED,当一个工作流Job处于被创建后的状态。或者处于RUNNING,SUSPENDED状态时,被杀死,则工作流Job的状态变为了KILLED状态。
f、FAILED,当一个工作流Job不可预期的错误失败而终止,就会变成FAILED状态。

1.3、组件之间的关系如图

2、Oozie部署

2.1、解压Oozie

2.2、修改 Hadoop 配置(原来学习的基础上添加如下内容)

vi core-site.xml

注:hadoop.proxyuser.admin.hosts 类似属性中的 admin 用户替换成你的 hadoop 用户。

vi mapred-site.xml

vi yarn-site.xml

2.3、重启 Hadoop

2.4、在 oozie 根目录下解压 hadooplibs

完成后 Oozie 目录下会出现 hadooplibs 目录。

2.5、在 Oozie 根目录下创建 libext 目录

2.6、拷贝一些依赖的 Jar 包

1) 将 hadooplibs 里面的 jar 包,拷贝到 libext 目录下:

2) 拷贝 Mysql 驱动包到 libext 目录下:

2.7、将 ext-2.2.zip 拷贝到 libext/目录下

ext 是一个 js 框架,用于展示 oozie 前端页面:

2.8、修改 Oozie 配置文件

oozie-site.xml

2.9、在 Mysql 中创建 Oozie 的数据库

2.10、初始化 Oozie

1) 上传 Oozie 目录下的 yarn.tar.gz 文件到 HDFS:

执行成功之后,去 50070 检查对应目录有没有文件生成。

2) 创建 oozie.sql 文件:

3) 打包项目,生成 war 包:

2.11、启动 Oozie 服务(附关闭 Oozie 服务)

2.12、访问 Oozie 的 Web 页面

猜你喜欢

转载自blog.csdn.net/liberty12345678/article/details/86539244