oozie 最全使用---2020

1. Oozie概述
一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop Mapreduce、Pig Jobs,shell 的任务调度与协调。Oozie需要部署到Java Servlet容器中运行(需要打成war包去运行)。
主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度。
类似oozie的框架有azkaban,zeux等

2. Oozie的功能模块
oozie的功能每个模块对应的是一个配置文件,配置文件里面配置相关信息
2.1 Workflow
顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个) 对应配置文件为Workflow.xml
2.2 Coordinator
定时触发workflow
2.3 Bundle Job(一般不用)
绑定多个Coordinator

3. oozie节点
oozie节点就是各个配置文件中使用的的节点
3.1 控制流节点(Control Flow Nodes)
控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径机制,如decision,fork,join等。

3.2 动作节点(Action Nodes)
负责执行具体动作的节点,比如:拷贝文件,执行某个Shell脚本等等

4. oozie的部署
这里配置的是cdh版本的,所以前提是安装cdh 的hadoop
需要已下资料:
hadoop cdh版本
ext 一个js框架
mysql 的jar包,因为oozie原数据也是放在mysql 中,需要配置mysql相关
oozie的安装包
在这里插入图片描述
有需要资料的留言
4.1 首先配置hadoop集群

core-site.xml 这里因为oozie需要调度mr任务需要和hadoop 交互,这里设置访问用户用户组

<!-- Oozie Server的Hostname -->
<property>
	<name>hadoop.proxyuser.admin.hosts</name>
	<value>*</value>
</property>

<!-- 允许被Oozie代理的用户组 -->
<property>
	<name>hadoop.proxyuser.admin.groups</name>
 	<value>*</value>
</property>

mapred-site.xml oozie执行mr 这里需要看执行日志,需要配置jobHistoryServer 它一般和namenode在同一个节点上

<!-- 配置 MapReduce JobHistory Server 地址 ,默认端口10020 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop-101:10020</value>
</property>

<!-- 配置 MapReduce JobHistory Server web ui 地址, 默认端口19888 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>

yarn-site.xml

<!-- 任务历史服务 一般和nn同意同一个节点 -->
<property> 
	<name>yarn.log.server.url</name> 
	<value>http://hadoop-101:19888/jobhistory/logs/</value> 
</property>

完成后:记得scp同步到其他机器节点,
测试jobHistoryServer是否可用,执行一个hadoop自带的jar

/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/yarn jar ./hadoop-mapreduce-examples-2.7.2.jar  wordcount /input/ /out/

查看hadoop-102:8088(resourceManager 节点)上看到yarn job 执行流程就成功了
在这里插入图片描述
4.2 部署Oozie

  1. 解压Oozie
[admin@hadoop102 software]$ tar -zxvf /opt/software/cdh/oozie-4.0.0-cdh5.3.6.tar.gz -C /opt/module/cdh
  1. 在oozie根目录下解压oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../

完成后Oozie目录下会出现hadooplibs目录
3) 在Oozie目录下创建libext目录,这个目录放相关依赖

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ mkdir libext/

将hadooplibs里面的jar包,拷贝到libext目录下:
拷贝Mysql驱动包到libext目录下:
将ext-2.2.zip拷贝到libext/目录下:

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -ra hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -a /opt/software/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar ./libext/
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ cp -a /opt/software/cdh/ext-2.2.zip libext/
  1. 配制Oozie配置文件
    vi conf/oozie-site.xml
    配制mysql 四要素 & hadoop 的配置文件位置
 <property>
        <name>oozie.service.JPAService.jdbc.driver</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>
            JDBC driver class.
        </description>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.url</name>
        <value>jdbc:mysql://hadoop-101:3306/oozie</value>
        <description>
            JDBC URL.
        </description>
    </property>

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

    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>root</value>
        <description>
            DB user password.

          IMPORTANT: if password is emtpy leave a 1 space string, the service trims the       value,
                       if empty Configuration assumes it is NULL.
        </description>
    </property>
     <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop</value>
        <description>
            Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
            the Hadoop service (JobTracker, HDFS). The wildcard '*' configuration is
            used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
            the relevant Hadoop *-site.xml files. If the path is relative is looked within
            the Oozie configuration directory; though the path can be absolute (i.e. to point
            to Hadoop client conf/ directories in the local filesystem.
        </description>
    </property>


总结为如下:

属性:oozie.service.JPAService.jdbc.driver
属性值:com.mysql.jdbc.Driver
解释:JDBC的驱动

属性:oozie.service.JPAService.jdbc.url
属性值:jdbc:mysql://hadoop102:3306/oozie
解释:oozie所需的数据库地址

属性:oozie.service.JPAService.jdbc.username
属性值:root
解释:数据库用户名

属性:oozie.service.JPAService.jdbc.password
属性值:000000
解释:数据库密码

属性:oozie.service.HadoopAccessorService.hadoop.configurations
属性值:*=/opt/module/CDH/hadoop-2.5.0-cdh5.3.6/etc/hadoop
解释:让Oozie引用Hadoop的配置文件

这里需要在mysql 创建oozie 数据库

mysql> create database oozie;
  1. 初始化Oozie
    上传 oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz到hdfs并解压
[admin@hadoop-102 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-101:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

这条目录自动解压
去50070检查对应目录有没有文件生成。
在这里插入图片描述
6) 创建oozie.sql文件

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/ooziedb.sh create -sqlfile oozie.sql -run

打包项目,生成war包(这里oozie服务确认是不启动的)

[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh prepare-war
  1. 启动关闭oozie
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh start
[admin@hadoop102 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh stop
  1. 启动之后访问Oozie的Web页面,端口11000
    http://hadoop-101:11000/oozie
    在这里插入图片描述
    如果有出现问题评论直接提问

5. oozie的第一个案例
案例内容:使用Oozie调度Shell脚本
第一步:创建app目录 oozie-app/shell 以后所有job都放在oozie-app的分目录下

[root@hadoop-102 oozie-4.0.0-cdh5.3.6]# mkdir oozie-app

第二步:在oozie-app/shell目录下创建两个文件——job.properties和workflow.xml文件

[root@hadoop-102 oozie-4.0.0-cdh5.3.6]# touch touch workflow.xml
[root@hadoop-102 oozie-4.0.0-cdh5.3.6]# touch job.properties
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值