常用的调度框架:
Oozie是一个分布式大数据调度框架,在oozie中,有两个重要的概念,工作流和调度。所谓工作流,就是将一系列作业按照一定的流程进行编程,按照自己的意愿去工作;对于调度,如果大家熟悉java,应该会知道quartz,是java后端调度框架,oozie与此类似,也是一个调度框架,它能够依据时间与数据对job进行调度。
因为对于Oozie来说,它有以下特点:
Oozie发展至今已经到5.X版本,在前面的几个版本中,Oozie经历了如下发展:
由以上发展的版本来看,Oozie中最最重要的三大组件是:WorkFlow,Coordinator,Bundle。另外,如果想要用Oozie的前端监控平台,需要在servlet容器中运行,因为前端监控界面使用ext.js开发。当然,也需要使用数据库来保存调度工作流的信息,默认的是使用derby内存数据库,一般情况下我们可以配置自己的mysql数据库来保存工作流信息。
为了更好的理解WorkFlow和Coordinator,下面两幅图分别是WorkFlow和Coordinator的示意图:
首先需要下载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].hostsname>
<value>[OOZIE_SERVER_HOSTNAME]value>
property>
<property>
<name>hadoop.proxyuser.[OOZIE_SERVER_USER].groupsname>
<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.configurationsname>
<value>*=/opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/etc/hadoopvalue>
property>
至此,我们完成了oozie的所有配置,可以使用如下命令运行oozie(注意,启动之前必须先启动hadoop):
bin/oozied.sh start