简介

  • Oozie 是用于 Hadoop 平台的开源的工作流调度引擎。
  • 用于管理 Hadoop
  • 属于web应用程序, 由 Oozie client 和 Oozie Server 两个组件构成。
  • Oozie Server 运行于 Java Servlet容器 (Tomcat) 中的 web 程序。

作用

  • 统一调度hadoop系统中场景的MR任务启动、hdfs操作、shell调度、hive操作等
  • 使得复杂的依赖关系、时间触发、事件触发使用xml语言进行表达, 开发效率提高
  • 一组任务使用一个DAG来表示, 使用图形表达流程逻辑更加清晰
  • 支持很多种任务调度, 能完成大部分 hadoop 任务处理
  • 程序定义支持 EL 常量 和 函数, 表达更加丰富

Oozie 架构

安装方式

  • 手动安装
  • Cloudera Manger 添加服务

Oozie Web控制台

  • 解压ext-x.x到/var/lib/oozie目录下 unzip ext-x.x.zip -d /var/lib/oozie/
  • Oozie服务中配置启用web控制台
  • 保存,重启oozie服务

Oozie 配置

  • 节点内存配置
  • oozie.service.callablequeueservice.callable.concurrency(节点并发)
  • oozie.service.callablequeueservice.queue.size(队列大小)
  • oozie.service.ActionService.executor.ext.classes(扩展)

Oozie 共享库

  • /user/oozie/share/lib(hdfs中目录)

web管理地址

  • http://oozie_host_ip:11000/oozie/

Oozie 管理

  • 任务列表查看
  • 任务状态查看
  • 流程返回信息
  • 节点信息查看
  • 流程图信息
  • 日志查看
  • 系统信息查看 和 配置

Oozie CLI 命令

Job 配置 job.properties

WorkFLow 配置

  • 版本信息

    • <workflow-app xmlns="uri:oozie:workflow:0.4" name=“workflow name">
  • EL函数

    • 基本EL函数

      • String firstNotNull(String value1, String value2)

      • String concat(String s1, String s2)

      • String replaceAll(String src, String regex, String replacement)

      • String appendAll(String src, String append, String delimeter)

      • String trim(String s)

      • String urlEncode(String s)

      • String timestamp()

      • String toJsonStr(Map) (since Oozie 3.3)

      • String toPropertiesStr(Map) (since Oozie 3.3)

      • String toConfigurationStr(Map) (since Oozie 3.3)

    • WorkFlow EL

      • String wf:id() – 返回当前workflow作业ID
      • String wf:name() – 返回当前workflow作业NAME
      • String wf:appPath() – 返回当前workflow的路径
      • String wf:conf(String name) – 获取当前workflow的完整配置信息
      • String wf:user() – 返回启动当前job的用户
      • String wf:callback(String stateVar) – 返回结点的回调URL,其中参数为动作指定的退出状态
      • int wf:run() – 返回workflow的运行编号,正常状态为0
      • Map wf:actionData(String node) – 返回当前节点完成时输出的信息
      • int wf:actionExternalStatus(String node) – 返回当前节点的状态
      • String wf:lastErrorNode() – 返回最后一个ERROR状态推出的节点名称
      • String wf:errorCode(String node) – 返回指定节点执行job的错误码,没有则返回空
      • String wf:errorMessage(String message) – 返回执行节点执行job的错误信息,没有则返回空
    • HDFS EL

      • boolean fs:exists(String path)
      • boolean fs:isDir(String path)
      • long fs:dirSize(String path) – 目录则返回目录下所有文件字节数;否则返回-1
      • long fs:fileSize(String path) – 文件则返回文件字节数;否则返回-1\
      • long fs:blockSize(String path) – 文件则返回文件块的字节数;否则返回-1
  • 节点

    • 流程控制节点

      • 流程控制节点

        • start – 定义workflow开始
        • end – 定义workflow结束
        • decision – 实现switch功能
        • sub-workflow – 调用子workflow
        • kill – 杀死workflow
        • fork – 并发执行workflow
        • join – 并发执行结束(与fork一起使用)
        <decision name="[NODE-NAME]">
        <switch>
        <case to="[NODE_NAME]">[PREDICATE]</case>
        ...
        <case to="[NODE_NAME]">[PREDICATE]</case>
        <default to="[NODE_NAME]" />
        </switch>
        </decision>
      • 动作节点

        • shell

        • java

        • fs

        • MR

        • hive

        • sqoop

          <fork name="[FORK-NODE-NAME]">
          <path start="[NODE-NAME]" />
          ...
          <path start="[NODE-NAME]" />
          </fork>
          ...
          <join name="[JOIN-NODE-NAME]" to="[NODE-NAME]" />
    • Shell节点

      • job.properties

        nameNode=hdfs://node01:8020
        jobTracker=node01:8032
        queueName=default
        examplesRoot=examples oozie.wf.application.path=${nameNode}/user/workflow/oozie/shell
      • workflow.xml

        <workflow-app xmlns="uri:oozie:workflow:0.3" name="shell-wf">
        <start to="shell-node"/>
        <action name="shell-node">
        <shell xmlns="uri:oozie:shell-action:0.1">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
        <property>
        <name>mapred.job.queue.name</name>
        <value>${queueName}</value>
        </property>
        </configuration>
        <exec>echo</exec>
        <argument>hi shell in oozie</argument>
        </shell>
        <ok to="end"/>
        <error to="fail"/>
        </action>
        <kill name="fail">
        <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
        </kill>
        <end name="end"/>
        </workflow-app>
    • 调用impala

      • job.properties

        nameNode=hdfs://node01:8020
        jobTracker=node01:8032
        queueName=default
        examplesRoot=examples
        oozie.usr.system.libpath=true
        oozie.libpath=${namenode}/user/${user.name}/workflow/impala/lib oozie.wf.application.path=${nameNode}/user/${user.name}/workflow/impala
      • workflow.xml

        <workflow-app xmlns="uri:oozie:workflow:0.4" name="impala-wf">
        <start to="shell-node"/>
        <action name="shell-node">
        <shell xmlns="uri:oozie:shell-action:0.1">
        <job-tracker>${jobTracker}</job-tracker>
        <name-node>${nameNode}</name-node>
        <configuration>
        <property>
        <name>mapred.job.queue.name</name>
        <value>${queueName}</value>
        </property>
        </configuration>
        <exec>impala-shell</exec>
        <argument>-i</argument>
        <argument>node02</argument>
        <argument>-q</argument>
        <argument>invalidate metadata</argument>
        <capture-output/>
        </shell>
        ......
        </action>
        .......
        </workflow-app>
    • fs节点

      • workflow.xml

        <workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.5">
        ...
        <action name="[NODE-NAME]">
        <fs>
        <delete path='[PATH]'/>
        <mkdir path='[PATH]'/>
        <move source='[SOURCE-PATH]' target='[TARGET-PATH]'/>
        <chmod path='[PATH]' permissions='[PERMISSIONS]' dir-files='false' />
        <touchz path='[PATH]' />
        <chgrp path='[PATH]' group='[GROUP]' dir-files='false' />
        </fs>
        <ok to="[NODE-NAME]"/>
        <error to="[NODE-NAME]"/>
        </action>
        </workflow-app>
    • Java节点

      • job.properties

        nameNode=hdfs://node01:8020
        jobTracker=node01:8032
        queueName=default
        examplesRoot=examples
        oozie.usr.system.libpath=true
        oozie.libpath=${nameNode}/user/workflow/lib/lib4java oozie.wf.application.path=${nameNode}/user/workflow/oozie/java
      • workflow.xml

      <workflow-app xmlns="uri:oozie:workflow:0.3" name="mr-wc-wf">
      <start to="mr-node"/>
      <action name="mr-node">
      <java>
      <job-tracker>${jobTracker}</job-tracker>
      <name-node>${nameNode}</name-node>
      <prepare>
      <delete path="${nameNode}/user/path" />
      <mkdir path="${nameNode}/user/path" />
      </prepare>
      <configuration>
      <property>
      <name>mapred.job.queue.name</name>
      <value>${queueName}</value>
      </property>
      </configuration>
      <main-class>com.pagename.classname</main-class>
      <arg>args1</arg>
      <arg>args2</arg>
      </java>
      <ok to="end"/>
      <error to="fail"/>
      </action>
      <kill name="fail">
      <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
      </kill>
      <end name="end"/>
      </workflow-app>

Oozie笔记的更多相关文章

  1. Hadoop Oozie 学习笔记

    Oozie是一个工作流引擎服务器,用于运行Hadoop Map/Reduce和Pig 任务工作流.同时Oozie还是一个Java Web程序,运行在Java Servlet容器中,如Tomcat. O ...

  2. oozie学习笔记

    #################################################################################################### ...

  3. Hadoop学习笔记—18.Sqoop框架学习

    一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数据移植过去并不容易.Apache Sqoop正在加 ...

  4. #数据技术选型#即席查询Shib+Presto,集群任务调度HUE+Oozie

    郑昀 创建于2014/10/30 最后更新于2014/10/31   一)选型:Shib+Presto 应用场景:即席查询(Ad-hoc Query) 1.1.即席查询的目标 使用者是产品/运营/销售 ...

  5. Hadoop概括——学习笔记<一>

    之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X概述第一章的笔记 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据 ...

  6. sqoop笔记

    adoop学习笔记—18.Sqoop框架学习   一.Sqoop基础:连接关系型数据库与Hadoop的桥梁 1.1 Sqoop的基本概念 Hadoop正成为企业用于大数据分析的最热门选择,但想将你的数 ...

  7. 【Oozie】安装配置Oozie

    安装和配置Oozie Oozie用于Hadoop的工作流配置: 参考链接: <Install and Configure Apache Oozie Workflow Scheduler for ...

  8. Apache Flink学习笔记

    Apache Flink学习笔记 简介 大数据的计算引擎分为4代 第一代:Hadoop承载的MapReduce.它将计算分为两个阶段,分别为Map和Reduce.对于上层应用来说,就要想办法去拆分算法 ...

  9. Hadoop自学笔记(一)常见Hadoop相关项目一览

    本自学笔记来自于Yutube上的视频Hadoop系列.网址: https://www.youtube.com/watch?v=-TaAVaAwZTs(当中一个) 以后不再赘述 自学笔记,难免有各类错误 ...

随机推荐

  1. vue-cli 初始化项目时开发环境中的跨域问题

    最近刚刚完成自己的毕业设计(基于Vue的信息资讯展示与管理平台),于是想整理一下过程遇到的一些问题. 项目基于Vue开发,使用 Vue-cli 初始化项目文件目录时默认占用8080端口,而我又想使用 ...

  2. 网络协议-dubbo协议

    Dubbo支持dubbo.rmi.hessian.http.webservice.thrift.redis等多种协议,但是Dubbo官网是推荐我们使用Dubbo协议的. 下面我们就针对Dubbo的每种 ...

  3. pygame学习的第一天

    pygame最小开发框架: import pygame, sys pygame.init() screen = pygame.display.set_mode((600, 480)) pygame.d ...

  4. Linux centosVMware 磁盘格式化、磁盘挂载、手动增加swap空间

    一.磁盘格式化 磁盘分区后不能直接使用,需要对每一个分区格式化,格式化其实就是安装系统文件. 命令mke2fs:不支持格式化成xfs系统文件  mkfs.ext4 == mke2fs -t ext4 ...

  5. java学习-初级入门-面向对象④-类与对象-类与对象的定义和使用2

    我们继续学习类与对象,上一篇我们定义了  坐标类(Point), 这次我们在Point的基础上,创建一个圆类(Circle). 案例:创建一个圆类 题目要求: 计算圆的周长和面积:求判断两个圆的位置关 ...

  6. BOM--location对象、history对象

    location对象 location 是最有用的BOM 对象之一,它提供了与当前窗口中加载的文档有关的信息,还提供了一些导航功能. 事实上,location 对象是很特别的一个对象,因为它既是win ...

  7. taucs库的使用方法(VS2012)

    第一步:到taucs主页下载taucs,我下载的是:Version 2.2 of the code, with external libraries 第二步:在visual studio tools下 ...

  8. Vim学习1移动光标

    vim adventure上面做了大量练习,是个好软件只是需要收费 HJKLWBE 首先HJKL分别是移动上下左右的 H:光标左移 J:下移 K:上移 L:右移 W:跳转到下一个单词的第一个字,注意是 ...

  9. PHP如何查找一列有序数组是否包含某值(二分查找)

    问题:对于一列有序数组,如何判断给出的一个值,该值是否存在于数组. 思路:判断是否存在,最简单是,直接循环该数组,对每一个值进行比较.但是对于有序数组来说,这样写就完全没有利用好“有序”这一特点. 所 ...

  10. YUV图解 (YUV444, YUV422, YUV420, YV12, NV12, NV21)

    背景: 最近在研究音视频,了解YUV这样的格式对于音视频开发比较重要. 虽然这篇文章大部分是转载别人的,但是经过了校对以后,重新排版并补充了一部分内容   概览: 之所以提出yuv格式的原因,是为了解 ...