Oozie的安装与使用

文章目录

  • 1、Oozie的介绍
  • 2、oozie的架构
  • 3、oozie的安装
    • 第一步:修改core-site.xml
    • 第二步:上传oozie的安装包并解压
    • 第三步:解压hadooplibs到与oozie平行的目录
    • 第四步:创建libext目录
    • 第五步:拷贝依赖包到libext
    • 第六步:添加ext-2.2.zip压缩包
    • 第七步:修改oozie-site.xml
    • 第八步:创建mysql数据库
    • 第九步:上传oozie依赖的jar包到hdfs上面去
    • 第十步:创建oozie的数据库表
    • 第十一步:打包项目,生成war包
    • 第十二步:配置oozie的环境变量
    • 第十三步:启动与关闭oozie服务
    • 第十四步:浏览器页面访问oozie
  • 4、oozie的使用
    • 4.1、使用oozie调度shell脚本
      • 第一步:解压官方提供的调度案例
      • 第二步:创建工作目录
      • 第三步:拷贝任务模板到工作目录当中去
      • 第四步:随意准备一个shell脚本
      • 第五步:修改模板下的配置文件
      • 第六步:上传调度任务到hdfs上面去
      • 第七步:执行调度任务
    • 4.2、使用oozie调度hive
      • 第一步:拷贝hive的案例模板
      • 第二步:编辑hive模板
      • 第三步:上传工作文件到hdfs
      • 第四步:执行oozie的调度
      • 第五步:查看调度结果
    • 4.3、使用oozie调度MR任务
      • 第一步:准备MR执行的数据
      • 第二步:执行官方测试案例
      • 第三步:准备调度的资源
      • 第三步:拷贝的jar包到对应目录
      • 第四步:修改配置文件
      • 第五步:上传调度任务到hdfs对应目录
      • 第六步:执行调度任务
    • 4.4、oozie的任务串联
      • 第一步:准备工作目录
      • 第二步:准备调度文件
      • 第三步:开发调度的配置文件
      • 第四步:上传资源文件夹到hdfs对应路径
      • 第五步:执行调度任务
    • 4.5、oozie的任务调度,定时任务执行
      • oozie当中定时任务的设置
      • oozie当中任务的查看以及杀死

1、Oozie的介绍

  Oozie是运行在hadoop平台上的一种工作流调度引擎,它可以用来调度与管理hadoop任务,如,MapReduce、Pig等。
Oozie的安装与使用_第1张图片
oozie的组件介绍
  workFlow: 工作流,定义工作流任务的执行,主要由一个个的action组成,每个action都是一个任务,在xml中进行配置即可
  Coordinator : 协作器,可以理解为工作流的协调器,可以将多个工作流协调成一个工作流来进行处理。也是oozie当中的定时任务调度的模块,
  Bundle : 捆,束。多个Coordinator 的抽象,可以通过bundle将多个Coordinator 进行组装集合起来,形成一个bundle
Oozie的安装与使用_第2张图片

2、oozie的架构

Oozie的安装与使用_第3张图片

3、oozie的安装

第一步:修改core-site.xml

修改core-site.xml添加我们hadoop集群的代理用户

cd /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop
vim  core-site.xml

        hadoop.proxyuser.root.hosts
        *


        hadoop.proxyuser.root.groups
        *

注意: hadoop的历史任务的服务必须启动,即19888端口可以查看。
修改完成之后,记得重启hadoop的hdfs与yarn集群,还要记得启动jobhistory

重启hdfs与yarn集群

cd /export/servers/hadoop-2.6.0-cdh5.14.0
sbin/stop-dfs.sh
sbin/start-dfs.sh
sbin/stop-yarn.sh
sbin/start-yarn.sh

第二步:上传oozie的安装包并解压

将oozie的安装包上传到/export/softwares

cd /export/softwares/
tar -zxvf oozie-4.1.0-cdh5.14.0.tar.gz -C ../servers/

第三步:解压hadooplibs到与oozie平行的目录

cd /export/servers/oozie-4.1.0-cdh5.14.0
tar -zxvf oozie-hadooplibs-4.1.0-cdh5.14.0.tar.gz -C ../

Oozie的安装与使用_第4张图片

第四步:创建libext目录

在oozie的安装路径下创建libext目录

cd /export/servers/oozie-4.1.0-cdh5.14.0
mkdir -p libext

第五步:拷贝依赖包到libext

拷贝一些依赖包到libext目录下面去
拷贝所有的依赖包

cd /export/servers/oozie-4.1.0-cdh5.14.0
cp -ra hadooplibs/hadooplib-2.6.0-cdh5.14.0.oozie-4.1.0-cdh5.14.0/* libext/

拷贝mysql的驱动包

cp /export/servers/hive-1.1.0-cdh5.14.0/lib/mysql-connector-java-5.1.38.jar /export/servers/oozie-4.1.0-cdh5.14.0/libext/

第六步:添加ext-2.2.zip压缩包

拷贝ext-2.2.zip这个包到libext目录当中去
将我们准备好的软件ext-2.2.zip拷贝到libext目录当中去

第七步:修改oozie-site.xml

cd /export/servers/oozie-4.1.0-cdh5.14.0/conf
vim oozie-site.xml

如果没有这些属性,直接添加进去即可,oozie默认使用的是UTC的时区,我们需要在我们oozie-site.xml当中记得要配置时区为GMT+0800时区


        oozie.service.JPAService.jdbc.driver</name>
        com.mysql.jdbc.Driver</value>
    </property>
	
	
        oozie.service.JPAService.jdbc.url</name>
        jdbc:mysql://node03.hadoop.com:3306/oozie</value>
    </property>
	
	
	
		oozie.service.JPAService.jdbc.username</name>
		root</value>
	</property>

    
        oozie.service.JPAService.jdbc.password</name>
        123456</value>
    </property>

	
			oozie.processing.timezone</name>
			GMT+0800</value>
	</property>


	
		oozie.service.ProxyUserService.proxyuser.hue.hosts</name>
        *</value>
    </property>
	
	
       oozie.service.ProxyUserService.proxyuser.hue.groups</name>
        *</value>
    </property>
	
	
        oozie.service.coord.check.maximum.frequency</name>
		false</value>
    </property>     


	
	oozie.service.HadoopAccessorService.hadoop.configurations</name>
        *=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop</value>
    </property>

第八步:创建mysql数据库

mysql -uroot -p
create database oozie;

第九步:上传oozie依赖的jar包到hdfs上面去

上传oozie的解压后目录的yarn.tar.gz到hdfs目录去

bin/oozie-setup.sh  sharelib create -fs hdfs://node01:8020 -locallib oozie-sharelib-4.1.0-cdh5.14.0-yarn.tar.gz

实际上就是将这些jar包解压到了hdfs上面的路径下面去了

第十步:创建oozie的数据库表

cd /export/servers/oozie-4.1.0-cdh5.14.0
bin/oozie-setup.sh  db create -run -sqlfile oozie.sql

第十一步:打包项目,生成war包

cd /export/servers/oozie-4.1.0-cdh5.14.0
bin/oozie-setup.sh  prepare-war

第十二步:配置oozie的环境变量

vim /etc/profile

export OOZIE_HOME=/export/servers/oozie-4.1.0-cdh5.14.0
export OOZIE_URL=http://node03.hadoop.com:11000/oozie
export PATH=:$OOZIE_HOME/bin:$PATH

source /etc/profile

Oozie的安装与使用_第5张图片

第十三步:启动与关闭oozie服务

启动命令

cd /export/servers/oozie-4.1.0-cdh5.14.0
bin/oozied.sh start 

关闭命令

bin/oozied.sh stop

Oozie的安装与使用_第6张图片

第十四步:浏览器页面访问oozie

http://node03:11000/oozie/

解决oozie的页面的时区问题:
我们页面访问的时候,发现oozie使用的还是GMT的时区,与我们现在的时区相差一定的时间,所以我们需要调整一个js的获取时区的方法,将其改成我们现在的时区

修改js当中的时区问题

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie-server/webapps/oozie
vim oozie-console.js
function getTimeZone() {
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
    return Ext.state.Manager.get("TimezoneId","GMT+0800");
}

重启oozie即可

cd /export/servers/oozie-4.1.0-cdh5.14.0

关闭oozie服务

bin/oozied.sh stop

启动oozie服务

bin/oozied.sh start

4、oozie的使用

KEY 含义
nameNode HDFS地址
jobTracker jobTracker(ResourceManager)地址
queueName Oozie队列(默认填写default)
examplesRoot 全局目录(默认填写examples)
oozie.usr.system.libpath 是否加载用户lib目录(true/false)
oozie.libpath 用户lib库所在的位置
oozie.wf.application.path Oozie流程所在hdfs地址(workflow.xml所在的地址)
user.name 当前用户
oozie.coord.application.path Coordinator.xml地址(没有可以不写)
oozie.bundle.application.path Bundle.xml地址(没有可以不写)

4.1、使用oozie调度shell脚本

  oozie安装好了之后,需要测试oozie的功能是否完整好使,官方已经给我们带了各种测试案例,我们可以通过官方提供的各种案例来对oozie进行调度

第一步:解压官方提供的调度案例

  oozie自带了各种案例,我们可以使用oozie自带的各种案例来作为模板,所以我们这里先把官方提供的各种案例给解压出来

cd /export/servers/oozie-4.1.0-cdh5.14.0
tar -zxf oozie-examples.tar.gz

Oozie的安装与使用_第7张图片

第二步:创建工作目录

在任意地方创建一个oozie的工作目录,以后调度任务的配置文件全部放到oozie的工作目录当中去
我这里直接在oozie的安装目录下面创建工作目录

cd /export/servers/oozie-4.1.0-cdh5.14.0
mkdir oozie_works

第三步:拷贝任务模板到工作目录当中去

任务模板以及工作目录都准备好了之后,我们把shell的任务模板拷贝到我们oozie的工作目录当中去

cd /export/servers/oozie-4.1.0-cdh5.14.0
cp -r examples/apps/shell/ oozie_works/

第四步:随意准备一个shell脚本

cd /export/servers/oozie-4.1.0-cdh5.14.0
vim oozie_works/shell/hello.sh

注意: 这个脚本一定要是在我们oozie工作路径下的shell路径下的位置

#!/bin/bash
echo "hello world" >> /export/servers/hello_oozie.txt

第五步:修改模板下的配置文件

修改job.properties

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/shell
vim job.properties
nameNode=hdfs://node01:8020
jobTracker=node01:8032
queueName=default
examplesRoot=oozie_works
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell
EXEC=hello.sh

修改workflow.xml

vim workflow.xml
<workflow-app xmlns="uri:oozie:workflow:0.4" name="shell-wf">
<start to="shell-node"/>
"shell-node">
    "uri:oozie:shell-action:0.2">
        -tracker>${jobTracker}</job-tracker>
        -node>${nameNode}</name-node>
        
            
                mapred.job.queue.name</name>
                ${queueName}</value>
            </property>
        </configuration>
        ${EXEC}</exec>
        <!-- my_output=Hello Oozie</argument> -->
        /user/root/oozie_works/shell/${EXEC}#${EXEC}

        -output/>
    </shell>
    "end"/>
    "fail"/>
</action>
"check-output">
    <switch>
        "end">
            ${wf:actionData('shell-node')['my_output'] eq 'Hello Oozie'}
        </case>
        "fail-output"/>
    </switch>
</decision>
<kill name="fail">
    Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
</kill>
<kill name="fail-output">
    Incorrect output, expected [Hello Oozie] but was [${wf:actionData('shell-node')['my_output']}]</message>
</kill>
<end name="end"/>
</workflow-app>

第六步:上传调度任务到hdfs上面去

注意: 上传的hdfs目录为/user/root,因为我们hadoop启动的时候使用的是root用户,如果hadoop启动的是其他用户,那么就上传到
/user/其他用户

cd /export/servers/oozie-4.1.0-cdh5.14.0
hdfs dfs -put oozie_works/ /user/root

第七步:执行调度任务

通过oozie的命令来执行调度任务

cd /export/servers/oozie-4.1.0-cdh5.14.0
bin/oozie job -oozie http://node03:11000/oozie -config oozie_works/shell/job.properties  -run

从监控界面可以看到任务执行成功了
Oozie的安装与使用_第8张图片

查看hadoop的19888端口,我们会发现,oozie启动了一个MR的任务去执行shell脚本
Oozie的安装与使用_第9张图片
在这里插入图片描述

4.2、使用oozie调度hive

第一步:拷贝hive的案例模板

cd /export/servers/oozie-4.1.0-cdh5.14.0
cp -ra examples/apps/hive2/ oozie_works/

第二步:编辑hive模板

这里使用的是hiveserver2来进行提交任务,需要注意我们要将hiveserver2的服务给启动起来

hive --service hiveserver2 &
hive --service metastore  &

修改job.properties

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie_works/hive2
vim job.properties
nameNode=hdfs://node01:8020
jobTracker=node01:8032
queueName=default
jdbcURL=jdbc:hive2://node03:10000/default
examplesRoot=oozie_works

oozie.use.system.libpath=true
# 配置我们文件上传到hdfs的保存路径 实际上就是在hdfs 的/user/root/oozie_works/hive2这个路径下
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/hive2

修改workflow.xml

vim workflow.xml
"1.0" encoding="UTF-8"?>
<workflow-app xmlns="uri:oozie:workflow:0.5" name="hive2-wf">
    <start to="hive2-node"/>

    "hive2-node">
        "uri:oozie:hive2-action:0.1">
            -tracker>${jobTracker}</job-tracker>
            -node>${nameNode}</name-node>
            
                "${nameNode}/user/${wf:user()}/${examplesRoot}/output-data/hive2"/>
                "${nameNode}/user/${wf:user()}/${examplesRoot}/output-data"/>
            </prepare>
            
                
                    mapred.job.queue.name</name>
                    ${queueName}</value>
                </property>
            </configuration>
            -url>${jdbcURL}</jdbc-url>
            
                    
                    

你可能感兴趣的:(Oozie,大数据全家桶)