hadoop离线阶段(第二十三节)oozie简介、安装和使用及oozie与hue的整合

本文详细介绍了Oozie的原理、安装步骤、配置过程,包括oozie的DAG执行模式、核心组件以及与Hadoop生态的集成。通过实例展示了如何调度Shell、Hive和MapReduce任务,还涵盖了Oozie与Hue的整合以及解决常见问题的方法,是Hadoop离线阶段Oozie使用的全面指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

oozie简介

oozie的介绍

Oozie是运行在hadoop平台上的一种工作流调度引擎,它可以用来调度与管理hadoop任务,如,MapReduce、Pig等。那么,对于OozieWorkflow中的一个个的action(可以理解成一个个MapReduce任务)Oozie是根据什么来对action的执行时间与执行顺序进行管理调度的呢?答案就是我们在数据结构中常见的有向无环图(DAGDirect Acyclic Graph)的模式来进行管理调度的,我们可以利用HPDL语言(一种xml语言)来定义整个workflow,实现工作流的调度oozie的架构以及执行流程

oozie的架构

在这里插入图片描述

oozie的执行流程

在这里插入图片描述

oozie的组件介绍

workFlow:工作流,定义我们的工作流的任务的执行,主要由一个个的action,在xml中进行配置即可。
Coordinator :协作器,说白了就是oozie当中的定时任务调度的模块。
Bundle :多个Coordinator 的抽象,可以通过bundle将多个Coordinator 进行组装集合起来,形成一个bundle。

oozie安装

第一步:修改core-site.xml

修改hadoop的core-site.xml,添加hadoop集群的代理用户。将一下内容添加到core-site.xml中:

<property>
     <name>hadoop.proxyuser.root.hosts</name>
     <value>*</value>
</property>
<property>
     <name>hadoop.proxyuser.root.groups</name>
     <value>*</value>
</property>

修改core-site.xml后,重启hadoop的hdfs和yarn集群,并且重启jobhistory服务:

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
sbin/mr-jobhistory-daemon.sh stop historyserver
sbin/mr-jobhistory-daemon.sh start historyserver

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

http://archive.cloudera.com/cdh5/cdh/5/上找oozie的tar.gz包,上传到Linux机器上,并解压到安装目录

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

在oozie的安装目录下有一个名称中带有oozie-hadooplibs的tar.gz包,将它解压到oozie安装目录的上级目录下。解压后,在oozie安装目录可以找到一个名为hadooplibs的目录。
在这里插入图片描述

第四步:创建libext目录

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

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

第五步:拷贝依赖包到libext

1、拷贝hadooplibs中的依赖包

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/

2、拷贝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目录当中去。

第七步:修改oozie-site.xml

oozie-site.xml在oozie安装目录的conf目录下,将以下内容添加到oozie-site.xml中:

<property>
    <name>oozie.service.JPAService.jdbc.driver</name>
    <value>com.mysql.jdbc.Driver</value>
</property>

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


<property>
<name>oozie.service.JPAService.jdbc.username</name>
<value>root</value>
</property>

<property>
    <name>oozie.service.JPAService.jdbc.password</name>
    <value>123456</value>
</property>
<!-- 配置时区 -->
<property>
	<name>oozie.processing.timezone</name>
	<value>GMT+0800</value>
</property>

<!-- 配置oozie与hue整合 -->
<property>
	<name>oozie.service.ProxyUserService.proxyuser.hue.hosts</name>
    <value>*</value>
</property>


<property>   
	<name>oozie.service.ProxyUserService.proxyuser.hue.groups</name>
	<value>*</value>
</property>
<!-- 关闭执行频率检查 -->
<property>
    <name>oozie.service.coord.check.maximum.frequency</name>
	<value>false</value>
</property>     

<!-- 指定hadoop配置文件的所在目录 -->
<property>
	<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
	<value>*=/export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop</value>
</property>

第八步:在mysql创建oozie数据库

登录MySQL,然后create database oozie;

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

执行以下命令

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

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的环境变量

在/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服务

cd /export/servers/oozie-4.1.0-cdh5.14.0
# 启动命令
bin/oozied.sh start 
# 关闭命令,关闭命令只是介绍,不用真的执行
bin/oozied.sh stop

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

用浏览器访问 http://node03:11000/oozie/。

第十五步:修改浏览器显示时区

1、修改oozie-console.js

cd /export/servers/oozie-4.1.0-cdh5.14.0/oozie-server/webapps/oozie
vim oozie-console.js

找到名为getTimeZone()的函数,将GMT改为GMT+0800

function getTimeZone() {
   
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
    return Ext.state.Manager.get("TimezoneId","GMT+0800");
}

2、重启oozie

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

3、在oozie浏览器端修改时区
在这里插入图片描述

oozie单独使用

使用oozie调度shell脚本

第一步:解压官方提供的调度案例
oozie自带了各种案例,可以使用oozie自带的各种案例来作为模板,先把官方提供的各种案例给解压出来。

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

解压后,出现一个名为examples的目录
在这里插入图片描述
第二步:创建工作目录
在任意地方创建一个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

脚本:

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

第五步:修改模板下的配置文件
1、修改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

2、修改workflow.xml
修改内容如下:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值