大数据调度框架Oozie概述以及安装部署

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37142346/article/details/81947168

一、初步认识Oozie

常用的调度框架:

  • Linux Crontab
  • Azkaban(简单易用,但是功能不够全)
  • Oozie
  • Zeus(阿里开源框架)

Oozie是一个分布式大数据调度框架,在oozie中,有两个重要的概念,工作流和调度。所谓工作流,就是将一系列作业按照一定的流程进行编程,按照自己的意愿去工作;对于调度,如果大家熟悉java,应该会知道quartz,是java后端调度框架,oozie与此类似,也是一个调度框架,它能够依据时间与数据对job进行调度。

因为对于Oozie来说,它有以下特点:

  1. 一个基于工作流引擎的开源框架,是由Cloudera公司贡献给Apache。它能够提供对Hadoop MapReduce和Pig Jobs的任务调度和协调。Oozie需要部署到Java Servlet容器中运行。
  2. Oozie工作流提供很多功能的节点,比如分支、并发、汇合等等。
  3. Oozie一般定义了控制流节点(Control Flow Nodes)和动作节点(Actions Nodes),其中控制流节点定义了流程的开始和结束。以及控制流程的执行路径(Execution Path),如decision,fork,join等;而动作节点包括MapReduce-Job,hadoop文件系统,Pig等Oozie子流程。
  4. Oozie是一个可扩展的、灵活的、分布式系统。

Oozie发展至今已经到5.X版本,在前面的几个版本中,Oozie经历了如下发展:

  1. Oozie v1是一个基于工作流引擎的调度框架(base WorkFlow Engine),你可以指定工作流job来运行hadoop mapreduce任务或者pig任务。
  2. Oozie v2是一个基于协调调度的框架(base Coordinator Engine),你可以指定工作流基于时间和数据来进行调度,可以基于一个时间点来调度工作流,也可以基于数据(hdfs)来调度工作流。
  3. Oozie v3是一个基于绑定引擎的框架(base Bundle Engine),它提供了更高层次的API来bundle一系列coordinator application,用户可以使用start/stop/resume/suspend/return 来更好的操作和控制一系列coordinator application。

由以上发展的版本来看,Oozie中最最重要的三大组件是:WorkFlow,Coordinator,Bundle。另外,如果想要用Oozie的前端监控平台,需要在servlet容器中运行,因为前端监控界面使用ext.js开发。当然,也需要使用数据库来保存调度工作流的信息,默认的是使用derby内存数据库,一般情况下我们可以配置自己的mysql数据库来保存工作流信息。

为了更好的理解WorkFlow和Coordinator,下面两幅图分别是WorkFlow和Coordinator的示意图:

WorkFlow:
这里写图片描述

Coordinator:
这里写图片描述

Oozie的架构图如下图所示:
这里写图片描述

Oozie安装、启动:

首先需要下载oozie,Apache版本的oozie需要自己编译,不过这里不进行编译,使用CDH版本 的Oozie。读者可自行去CDH官方网站下载。

这里使用Oozie4.0.0版本,安装环境要求如下:
- Unix box (tested on Mac OS X and Linux)
- Java JDK 1.6+
- Maven 3.0.1+
- Hadoop 0.20.2+
- Pig 0.7+

除了需要下载Oozie压缩包外,读者还需要有hadoop环境,此外,需要下载ext.js的压缩包。这里使用hadoop2.5.0版本,用户可以下载适当版本的oozie和hadoop版本 安装即可

解压好Oozie安装包之后,首先在hadoop配置文件中为Oozie进程配置代理用户,在core-site.xml文件中配置如下:

<property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
    <value>[OOZIE_SERVER_HOSTNAME]</value>
  </property>
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
    <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
  </property>

OOZIE_SERVER_USER是你的服务器用户名,OOZIE_SERVER_HOSTNAME是主机名,USER_GROUPS_THAT_ALLOW_IMPERSONATION一般填*,表示所有组。

解压好的oozie安装包里的目录如下图所示(这里是我们配置好的截图,具体可以看目录作用可以看官网介绍)。
这里写图片描述

这里需要将hadoop-lib文件解压,即上图中的oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz压缩包解压,解压之后目录如上图所示,为oozie-4.0.0-cdh5.3.6,在该目录下,有一个hadooplibs目录,这个目录下有两个文件:

hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6
hadooplib-2.5.0-mr1-cdh5.3.6.oozie-4.0.0-cdh5.3.6

这两个文件是oozie为hadoop提供的支持类库,第一个是hadoop2的类库,第二个是hadoop1的类库,在后面配置时当然要选择hadoop2了。

接着,创建一个libext文件夹,将上面所说的hadoop2的类库以及ext的压缩包拷贝到这个目录下。

然后使用下面命令生成一个war包,它会将oozie部署到内嵌的tomcat容器中:

bin/oozie-setup.sh prepare-war 

接着,安装sharelib,需要制定hdfs文件系统地址,然后还需要制定sharelib安装包的地址,如果不指定,它会在oozie安装目录下搜索,但是在oozie安装目录下有两个sharelib压缩包,记住,必须选择支持yarn的压缩包,命令如下所示:

bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-senior.shinelon.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

使用oozie安装目录下自带的sql文件创建数据库:

bin/ooziedb.sh create -sqlfile oozie.sql -run DB Connection

最后,还需要在oozie-site.xml配置文件中指定hadoop配置文件的目录:

 <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
    </property>

至此,我们完成了oozie的所有配置,可以使用如下命令运行oozie(注意,启动之前必须先启动hadoop):

bin/oozied.sh start

启动之后,可以在浏览器中通过11000端口访问oozie前端控制台,如下图所示:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/qq_37142346/article/details/81947168