1、Oozie的简单介绍:

、Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流,同时Oozie还是一个Java web程序,运行在Java Servlet容器中,如Tomcat中。Oozie以action为基本任务单元,可以将多个action构成一个DAG图,(有向五环图Direct Acyclic Graph)的模式进行运行。Oozie工作流通过HPDL(一种通过XML自定义处理的语言)来构造Oozie的工作流。一个Oozie服务器主要包括四个服务:Oozie Workflow,Oozie Coordinator,Oozie Bundle和Oozie SLA(Oozie服务器等级协定)。
  a、Oozie Workflow:该组件用于定义和执行一个特定顺序的mapreduce,hive和pig作业。
  b、Oozie Coordinator:该组件用户支持基于事件,系统资源存在性等条件的workflow的自动化执行。
  c、Oozie Bundle:该引擎可以定义和执行“一束”应用,从而提供一个批量化的方法,将一组Coordinator应用程序一起进行管理。
  d、Oozie服务器等级协定(Service Level Agreement,SLA):该组件支持workflow应用程序执行过程的记录跟踪。

2、Oozie的安装操作:

1、Oozie使用tomcat等服务器作为web页面展示容器,使用关系型数据库存储Oozie的工作流元数据,默认使用derby,由于derby的缺点,一般情况使用mysql作为Oozie的元数据库,使用extjs来作为报表展示js框架。
  a、安装步骤:
    1)、安装mysql。之前安装过,省略。
    2)、安装tomcat。
      a、下载tomcat压缩包:wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
        [hadoop@slaver1 package]$ wget http://archive.apache.org/dist/tomcat/tomcat-7/v7.0.8/bin/apache-tomcat-7.0.8.tar.gz
      b、解压缩操作。
       [hadoop@slaver1 package]$ tar -zxvf apache-tomcat-7.0.8.tar.gz -C /home/hadoop/soft/
      c、设置环境变量。
        [hadoop@slaver1 soft]$ sudo vim /etc/profile
        export CATALINA_HOME=/home/hadoop/soft/apache-tomcat-7.0.8
        export PATH=$PATH:$CATALINA_HOME/bin
      d、启动tomcat测试是否安装成功。
        [hadoop@slaver1 bin]$ startup.sh
        [hadoop@slaver1 apache-tomcat-7.0.8]$ jps
        4547 Bootstrap
    3)、安装Oozie。下载地址:archive.cloudera.com/cdh5/cdh/5/oozie-4.0.0-cdh5.3.6.tar.gz
      a、下载Oozie安装包解压缩操作和ext-2.2.zip。
        [hadoop@slaver1 package]$ tar -zxvf oozie-4.0.0-cdh5.3.6.tar.gz -C /home/hadoop/soft/
      b、设置用户环境变量。
        [hadoop@slaver1 soft]$ sudo vim /etc/profile
        export OOIZE_HOME=/home/hadoop/soft/oozie-4.0.0-cdh5.3.6
        export PATH=$PATH:$OOIZE_HOME/bin
      c、修改cong/Oozie-site.xml文件进行配置信息修改。(这个文件的内容可以去Oozie-default.xml文件找)
        主要就是进行元数据指定和service的指定:
        配置信息见下面所示:
      如果修改端口号,可以在conf/oozie-enc.sh文件中进行参数修改,比如修改端口号,默认端口号为11000。
      d、在Oozie根目录下创建libext文件夹,并将Oozie依赖的其他第三方jar移动到该目录下面。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ mkdir libext
        然后将mysql的driver压缩包到libext文件夹中:
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ cp /home/hadoop/package/mysql-connector-java-5.1.31.jar ./libext/
      e、创建Oozie元数据库。执行sql创建,执行完成后,mysql中出现数据库和数据表:
        [hadoop@slaver1 ~]$ ooziedb.sh create -sqlfile oozie.sql -run
      f、设置hadoop代理用户。必须设置 哦。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ vim /home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/etc/hadoop/core-site.xml
         <property>
                <name>hadoop.proxyuser.hadoop.hosts</name>
                <value>*</value>
            </property>
            <property>
                <name>hadoop.proxyuser.hadoop.groups</name>
                <value>*</value>
            </property>
      g、在hdfs上设置Oozie的公用jar文件夹。
        hadoop的默认端口号是8020,我改成了9000,所以这里注意一下:
        [hadoop@slaver1 ~]$ oozie-setup.sh sharelib create -fs hdfs://slaver1:8020 -locallib $OOIZE_HOME/oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozie-setup.sh sharelib create -fs hdfs://slaver1:9000 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz
      h、创建Oozie的war文件。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ addtowar.sh -inputwar ./oozie.war -outputwar ./oozie-server/webapps/oozie.war -hadoop 2.5.0 $HADOOP_HOME -jars ./libext/mysql-connector-java-5.1.31.jar -extjs ../../../hadoop/package/ext-2.2.zip
        或者将hadoop相关包,mysql相关包,ext相关压缩包放到libext文件夹中,运行oozie-setup.sh prepare-war也可以创建war文件。
      i、运行Oozie并检查是否安装完成。
        oozied.sh run 或者oozied.sh start(前端在前端运行,后者在后台运行)
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozied.sh start
      j、查询web界面&查看状态:oozie admin -oozie http://slaver1:11000/oozie -status。
        [hadoop@slaver1 oozie-4.0.0-cdh5.3.6]$ oozie admin -oozie http://slaver1:11000/oozie -status

3:Oozie的conf文件修改oozie.site.xml:

<?xml version="1.0"?>
<configuration>
<property>
<name>oozie.services</name>
<value>
org.apache.oozie.service.JobsConcurrencyService,
org.apache.oozie.service.SchedulerService,
org.apache.oozie.service.InstrumentationService,
org.apache.oozie.service.MemoryLocksService,
org.apache.oozie.service.CallableQueueService,
org.apache.oozie.service.UUIDService,
org.apache.oozie.service.ELService,
org.apache.oozie.service.AuthorizationService,
org.apache.oozie.service.UserGroupInformationService,
org.apache.oozie.service.HadoopAccessorService,
org.apache.oozie.service.URIHandlerService,
org.apache.oozie.service.DagXLogInfoService,
org.apache.oozie.service.SchemaService,
org.apache.oozie.service.LiteWorkflowAppService,
org.apache.oozie.service.JPAService,
org.apache.oozie.service.StoreService,
org.apache.oozie.service.CoordinatorStoreService,
org.apache.oozie.service.SLAStoreService,
org.apache.oozie.service.DBLiteWorkflowStoreService,
org.apache.oozie.service.CallbackService,
org.apache.oozie.service.ActionService,
org.apache.oozie.service.ShareLibService,
org.apache.oozie.service.ActionCheckerService,
org.apache.oozie.service.RecoveryService,
org.apache.oozie.service.PurgeService,
org.apache.oozie.service.CoordinatorEngineService,
org.apache.oozie.service.BundleEngineService,
org.apache.oozie.service.DagEngineService,
org.apache.oozie.service.CoordMaterializeTriggerService,
org.apache.oozie.service.StatusTransitService,
org.apache.oozie.service.PauseTransitService,
org.apache.oozie.service.GroupsService,
org.apache.oozie.service.ProxyUserService,
org.apache.oozie.service.XLogStreamingService,
org.apache.oozie.service.JvmPauseMonitorService
</value>
</property>
<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=/home/hadoop/soft/hadoop-2.5.-cdh5.3.6/etc/hadoop</value>
</property>
<property>
<name>oozie.service.JPAService.create.db.schema</name>
<value>true</value>
</property> <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://slaver1:3306/ooize?createDatabaseIfNotExist=true</value>
</property> <property>
<name>oozie.service.JPAService.jdbc.username</name>
<value>hive</value>
</property> <property>
<name>oozie.service.JPAService.jdbc.password</name>
<value>hive</value>
</property> <property>
<name>oozie.processing.timezone</name>
<value>GMT+</value>
</property>
</configuration>

4、web界面如下所示:

5、Oozie的工作流介绍:

1、Oozie的四大组件服务分别是:workflow,coordinator,boundle和sla。启动sla是作为监控服务协议的一个组件,workflow定义Ooize的基本工作流,coordinator定义定时(或者是根据其他资源指标)运行的workflow任务。bundle是将多个coordinator作为一个组件一起管理。也就是说workflow是oozie中最基本的一个服务组件。三大服务的关系是:bundle包含多个coordinator,coordinator包含一个workflow,workflow定义具体的action动作。
2、workflow使用hadoop流程定义语言(hadoop process defination language,hPDL)来描述工作流,hPDL是类似xml语言的一种相当简介的定义类语言,使用有限数目的流控制节点和动作节点来描述workflow,也就是说workflow有两大类节点构成:工作流控制节点和动作节点。其中工作流控制节点是workflow本身提供的一种控制workflow工作流执行路径的方法,不可以自定义,动作节点是具体的操作方法,用户可以自定义。
  workflow工作流的声明周期:
  a、PREP,一个工作流第一次创建就处于PREP状态,表示工作流已经创建,但是还没有运行。
  b、RUNNIG,当一个已经被创建的工作流job开始执行的时候,就处于RUNNING状态。它不会达到结束状态,只能因为出错而结束或者被挂起。
  c、SUSPENDED,一个RUNNING状态的工作流Job会变成SUSPENDED状态,而且它会一直处于该状态,除非这个工作流Job被重启开始执行或者被杀死。
  d、SUCCESSEDED,当一个RUNNING状态的工作流Job达到了end节点,他就变成了SUCCESSEDED最终完成状态。
  e、KILLED,当一个工作流Job处于被创建后的状态。或者处于RUNNING,SUSPENDED状态时,被杀死,则工作流Job的状态变为了KILLED状态。
  f、FAILED,当一个工作流Job不可预期的错误失败而终止,就会变成FAILED状态。
3、
4、

组件之间的关系如下所示:

6、

待续......

Oozie如何和安装部署的更多相关文章

  1. 【Hadoop离线基础总结】oozie的安装部署与使用

    目录 简单介绍 概述 架构 安装部署 1.修改core-site.xml 2.上传oozie的安装包并解压 3.解压hadooplibs到与oozie平行的目录 4.创建libext目录,并拷贝依赖包 ...

  2. Oozie安装部署

    不多说,直接上干货! 首先,大家先去看我这篇博客.对于Oozie的安装有一个全新的认识. Oozie安装的说明 我这里呢,本篇博文定位于手动来安装Oozie,同时避免Apache版本的繁琐编译安装,直 ...

  3. 大数据技术之_13_Azkaban学习_Azkaban(阿兹卡班)介绍 + Azkaban 安装部署 + Azkaban 实战

    一 概述1.1 为什么需要工作流调度系统1.2 常见工作流调度系统1.3 各种调度工具特性对比1.4 Azkaban 与 Oozie 对比二 Azkaban(阿兹卡班) 介绍三 Azkaban 安装部 ...

  4. Azkaban2.5安装部署(系统时区设置 + 安装和配置mysql + Azkaban Web Server 安装 + Azkaban Executor Server安装 + Azkaban web server插件安装 + Azkaban Executor Server 插件安装)(博主推荐)(五)

    Azkaban是什么?(一) Azkaban的功能特点(二) Azkaban的架构(三) Hadoop工作流引擎之Azkaban与Oozie对比(四) 不多说,直接上干货! http://www.cn ...

  5. hue框架介绍和安装部署

    大家好,我是来自内蒙古的小哥,我现在在北京学习大数据,我想把学到的东西分享给大家,想和大家一起学习 hue框架介绍和安装部署 hue全称:HUE=Hadoop User Experience 他是cl ...

  6. 【Hadoop离线基础总结】Hue的简单介绍和安装部署

    目录 Hue的简单介绍 概述 核心功能 安装部署 下载Hue的压缩包并上传到linux解压 编译安装启动 启动Hue进程 hue与其他框架的集成 Hue与Hadoop集成 Hue与Hive集成 Hue ...

  7. 最新版大数据平台安装部署指南,HDP-2.6.5.0,ambari-2.6.2.0

    一.服务器环境配置 1 系统要求 名称 地址 操作系统 root密码 Master1 10.1.0.30 Centos 7.7 Root@bidsum1 Master2 10.1.0.105 Cent ...

  8. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  9. KVM安装部署

    KVM安装部署 公司开始部署KVM,KVM的全称是kernel base virtual machine,对KVM虚拟化技术研究了一段时间, KVM是基于硬件的完全虚拟化,跟vmware.xen.hy ...

随机推荐

  1. valgrind简介以及在ARM上交叉编译运行【转】

    转自:https://blog.csdn.net/dengcanjun6/article/details/54958359 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  2. Vue.js 子组件的异步加载及其生命周期控制

    前端开发社区的繁荣,造就了很多优秀的基于 MVVM 设计模式的框架,而组件化开发思想也越来越深入人心.这其中不得不提到 Vue.js 这个专注于 VM 层的框架. 本文主要对 Vue.js 组件化开发 ...

  3. python3+selenium入门01-环境搭建

    作为一个测试,在最近两年应该有明显的感觉.那就是工作变的难找,要求变的高了,自动化测试,性能测试等.没有自动化测试能力,只会点点点工作难找不说,工资也不高.所以还是要学习一些技术.首先要学习一门编程语 ...

  4. 用ARX自定义实体

      本文介绍了构造自定义实体的步骤.必须继承的函数和必须注意的事项 1.新建一个从AcDbEntity继承的类,如EntTest,必须添加的头文件: "stdarx.h",&quo ...

  5. Django-jinjia2的赋值

    一 变量 1. 变量的形式是:{{ variable }},当模板引擎碰到变量时,引擎使用变量的值替代变量: 2. 使用“.”能够访问变量的属性: 3. 当模板引擎碰到“.”的时候,查找顺序是: a) ...

  6. 【转】C++ 11 并发指南一(C++ 11 多线程初探)

    引言 C++ 11自2011年发布以来已经快两年了,之前一直没怎么关注,直到最近几个月才看了一些C++ 11的新特性,算是记录一下自己学到的东西吧,和大家共勉. 相信Linux程序员都用过Pthrea ...

  7. Markdown中Latex 数学公式基本语法

    原文地址:http://blog.csdn.net/u014630987/article/details/70156489 Markdown中Latex 数学公式基本语法 公式排版 分为两种排版: - ...

  8. web@css普通布局 , 高级布局 , 布局坑

    1.高级布局<文档流概念>:页面从上至下,块式标签一行一行排列,内联式一行中从左至右排列<BFC规则>:左右位置(左右margin)垂直位置(上下margin)容器内外(互不影 ...

  9. mybatis打印SQL日志

    在配置的log4j输出时,不能打印SQL信息,在mybatis-config.xml中添加如下配置即可 <settings> <setting name="logImpl& ...

  10. Flask允许跨域

    什么是跨域 在 HTML 中,<a>, <form>, <img>, <script>, <iframe>, <link> 等标 ...