简介

  • 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. 【快学springboot】14.操作redis之list

    前言 之前讲解了springboot(StringRedisTemplate)操作redis的string数据结构,这篇文章将会讲解list数据结构 list数据结构具有的操作 下图列出了redis ...

  2. 【jmeter】NO-GUI模式运行的过程及报错解决方法(转)

    1.什么都不需要设置(若非得想配置点什么的话,那请看备注) 2.将脚本抛到Linux里 3.执行 jmeter -n -t /opt/day7_buildbug.jmx -l result.jtl - ...

  3. jqGrid 重新加载数据

    参考:https://blog.csdn.net/u012746051/article/details/52949353 $("#列表区域id").jqGrid('clearGri ...

  4. 记录要做的事情,把sql字符串替换写成工具网页。

    之前使用的是java的本地控制台进行sql占位符的替换. 现在我想换个方式,想到了两种. 第一种是使用java +jsp进行替换,前台输出. 第二种是把java代码改成js代码,反正也不用访问数据库. ...

  5. Day8 - C - Largest Rectangle in a Histogram HDU - 1506

    A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rec ...

  6. IdentityServer4专题之三:OAuth、SSO和OpenID

    一.oauth 典型案例:如果一个用户R拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B.由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自 ...

  7. ROS-3 : Catkin工作空间和ROS功能包

    一.创建一个Catkin工作空间 步骤一:构建catkin工作空间 安装完成ROS版本后,设置好环境变量:$ source /opt/ros/kinetic/setup.bash.然后即可创建一个ca ...

  8. arm linux 移植 x265

    背景 本来想着把 x265编译到ffmpeg里面,搞定了x265的编译:但是一直报ERROR: x265 not found using pkg-config这个错误,我按照网上的资料,查看了ffbu ...

  9. arm linux 支持 wifi (wpa_supplicant)

    背景: 公司用的产品主板支持wifi接口,为了加强产品的功能,做wifi的底层支持. 有关知识点:浅谈 Linux 内核无线子系统 概览 主要的流程如下: 内核配置 + 有关驱动的移植 + 软件的移植 ...

  10. day02-Python运维开发基础

    1. Number 数据类型 2. 容器数据类型-字符串 """ 语法: "字符串" % (值1,值2 ... ) 占位符: %d 整型占位符 %f ...