前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oozie快速入门系列(1) | Oozie的简单介绍及部署

Oozie快速入门系列(1) | Oozie的简单介绍及部署

作者头像
不温卜火
发布2020-10-28 16:42:22
1.5K0
发布2020-10-28 16:42:22
举报
文章被收录于专栏:不温卜火

此篇为大家带来的是Oozie的简单介绍及部署。

此部分所需jar包等博主已经打包上传到百度云如有需要,请自行下载 链接:https://pan.baidu.com/s/1H3BvKEftWKitjDf2EhX44g 提取码:96a7

一. 什么是Oozie

1
1

  Oozie英文翻译为:驯象人。一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop MapReduce、Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行。主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度。

二. Oozie的功能模块介绍

2.1 模块

  • 1. Workflow(工作流程)

  顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)

  • 2. Coordinator

  定时触发workflow

  • 3. Bundle Job

  绑定多个Coordinator

下图为Oozie定义的工作流程

2
2

2.2 常用节点

  • 1.控制流节点(Control Flow Nodes)

  控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径机制,如decision,fork,join等。

  • 2.动作节点(Action Nodes)

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

三. Oozie的部署

  部署Oozie用的是CDH版本的。因为阿帕奇官网给的Oozie只有原始版版本的需要编译才能进行使用。

3.1 部署Hadoop(CDH版本)

1. 上传及解压缩

  • 1. 上传所需文件
3
3
  • 2. 创建文件并加压cdh到创建文件夹
代码语言:javascript
复制
[bigdata@hadoop002 oozie]$ mkdir /opt/module/cdh
[bigdata@hadoop002 oozie]$ tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C /opt/module/cdh/
4
4

/opt/module/cdh/hadoop-2.5.0-cdh5.3.6

2. 修改Hadoop配置

  • 1. 修改slaves
代码语言:javascript
复制
[bigdata@hadoop002 hadoop]$ vim slaves 

// 需要添加的内容
hadoop002
hadoop003
hadoop004
  • 2. hadoop-env.sh
代码语言:javascript
复制
// 首先先获取 JAVA_HOME 
[bigdata@hadoop002 hadoop]$ echo $JAVA_HOME
/opt/module/jdk1.8.0_144

// 所要修改的部分
export JAVA_HOME=/opt/module/jdk1.8.0_144
5
5
  • 3. mapred-env.sh
代码语言:javascript
复制
// 同
export JAVA_HOME=export JAVA_HOME=/opt/module/jdk1.8.0_144
7
7
  • 4. yarn-env.sh
代码语言:javascript
复制
// 改这一行
export JAVA_HOME=/opt/module/jdk1.8.0_144
6
6
  • 5. core-site.xml
代码语言:javascript
复制
<configuration>

    <!-- 指定HDFS中NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop002:8020</value>
    </property>

    <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
    </property>


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

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


</configuration>
7
7
  • 6. hdfs-site.xml
代码语言:javascript
复制
<configuration>

    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop004:50090</value>
    </property>


</configuration>
  • 7. mapred-site.xml
代码语言:javascript
复制
// 先修改文件名
[bigdata@hadoop002 hadoop]$ mv mapred-site.xml.template mapred-site.xml


<configuration>
    <!-- 指定mr运行在yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

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

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


</configuration>
  • 8. yarn-site.xml
代码语言:javascript
复制
<configuration>

<!-- Site specific YARN configuration properties -->

    <!-- reducer获取数据的方式 -->
    <property>
         <name>yarn.nodemanager.aux-services</name>
         <value>mapreduce_shuffle</value>
    </property>

    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop003</value>
    </property>

    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>

    <!-- 任务历史服务 -->
    <property> 
        <name>yarn.log.server.url</name> 
        <value>http://hadoop002:19888/jobhistory/logs/</value> 
    </property>



</configuration>
  • 9. 重新格式化并启动测试
代码语言:javascript
复制
// 首次启动需要格式化namenode
[bigdata@hadoop002 hadoop]$ cd /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hdfs namenode -format
// 都要格式化
// 正常情况下是不会出现其他状况的直接成功
// 重启Hadoop集群
// 注意:需要开启JobHistoryServer, 最好执行一个MR任务进行测试。
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ sbin/start-dfs.sh
[bigdata@hadoop003 hadoop-2.5.0-cdh5.3.6]$ sbin/start-yarn.sh
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ sbin/mr-jobhistory-daemon.sh start historyserver
8
8
9
9
10
10
代码语言:javascript
复制
// 测试
// 1. 创建文件(hdfs)
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hadoop fs -mkdir /input
// 创建文档
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ vim buwenbuhuo.txt
// 填写内容
my  buwenbuhuo
wo haoren 
// 上传到HDFS上
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hadoop fs -put buwenbuhuo.txt /input
// 运行例子
[bigdata@hadoop002 hadoop-2.5.0-cdh5.3.6]$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /input /output
11
11
12
12

3.2 部署Oozie

1. 解压Oozie

代码语言:javascript
复制
[bigdata@hadoop002 software]$ tar -zxvf software/oozie/oozie-4.0.0-cdh5.3.6.tar.gz -C ./
13
13

2. 在oozie根目录下解压oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz

代码语言:javascript
复制
// 完成后Oozie目录下会出现hadooplibs目录。
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C ../
14
14

3. 在Oozie目录下创建libext目录

代码语言:javascript
复制
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$  mkdir libext/

4. 拷贝依赖的Jar包

  • 1. 将hadooplibs里面的jar包,拷贝到libext目录下
代码语言:javascript
复制
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ cp hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6/* libext/
  • 2. 拷贝Mysql驱动包到libext目录下
代码语言:javascript
复制
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ cp /opt/software/oozie/mysql-connector-java-5.1.27-bin.jar libext/

5. 将ext-2.2.zip拷贝到libext/目录下

代码语言:javascript
复制
// ext是一个js框架,用于展示oozie前端页面
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ cp /opt/software/oozie/ext-2.2.zip libext/

6. 修改Oozie配置文件

  • 1. oozie-site.xml
代码语言:javascript
复制
属性:oozie.service.JPAService.jdbc.driver
属性值:com.mysql.jdbc.Driver
解释:JDBC的驱动

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

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

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

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

// 下图为我们所要修改的地方
15
15
16
16

7. 在Mysql中创建Oozie的数据库

  • 进入Mysql并创建oozie数据库
代码语言:javascript
复制
[bigdata@hadoop002 opt]$ mysql -uroot -p199712
mysql> create database oozie;
17
17

8. 初始化Oozie

  • 1. 上传Oozie目录下的yarn.tar.gz文件到HDFS
代码语言:javascript
复制
//  提示:yarn.tar.gz文件会自行解压
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh sharelib create -fs hdfs://hadoop002:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
18
18
  • 2. 创建oozie.sql文件
代码语言:javascript
复制
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/ooziedb.sh create -sqlfile oozie.sql -run
19
19
  • 3. 打包项目,生成war包
代码语言:javascript
复制
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozie-setup.sh prepare-war
20
20

9. Oozie的启动与关闭

代码语言:javascript
复制
// 启动命令如下:
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh start
// 关闭命令如下:
[bigdata@hadoop002 oozie-4.0.0-cdh5.3.6]$ bin/oozied.sh stop
21
21

10. 访问Oozie的Web页面

http://hadoop002:11000/oozie

22
22

这样就大功告成了!!!

  本次的分享就到这里了

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 什么是Oozie
  • 二. Oozie的功能模块介绍
    • 2.1 模块
      • 2.2 常用节点
      • 三. Oozie的部署
        • 3.1 部署Hadoop(CDH版本)
          • 1. 上传及解压缩
          • 2. 修改Hadoop配置
        • 3.2 部署Oozie
          • 1. 解压Oozie
          • 2. 在oozie根目录下解压oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
          • 3. 在Oozie目录下创建libext目录
          • 4. 拷贝依赖的Jar包
          • 5. 将ext-2.2.zip拷贝到libext/目录下
          • 6. 修改Oozie配置文件
          • 7. 在Mysql中创建Oozie的数据库
          • 8. 初始化Oozie
          • 9. Oozie的启动与关闭
          • 10. 访问Oozie的Web页面
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档