简介

  • 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】在springboot中写单元测试

    前言 很多公司都有写单元测试的硬性要求,在提交代码的时候,如果单测通不过或者说单元测试各种覆盖率不达标,会被拒绝合并代码.写单元测试,也是保证代码质量的一种方式. junit单元测试 相信绝大多数的J ...

  2. 九 SpringMvc与json交互

    将json输出到页面: 1 加入jar包 2 配置Controller层,开启注解ResponseBody,将json发送到页面: 3 访问url 4 响应json,在形参列表里面加上注解

  3. Prometheus 学习目录

    Prometheus 介绍 Prometheus 安装 https://www.bookstack.cn/read/prometheus-book/quickstart-why-monitor.md ...

  4. canvas象棋 画图

    今天写了一个canvas画图的象棋 .js基础不行,只画了个图,以后补充... <!DOCTYPE html> <html lang="en"> <h ...

  5. Oracle查看正在执行的存储过程

    正在执行的存储过程 select owner,name from v$db_object_cache where type like '%PROCE%' and locks >0 and pin ...

  6. selenium+chrome抓取淘宝宝贝-崔庆才思路

    站点分析 源码及遇到的问题 在搜索时,会跳转到登录界面 step1:干起来! 先取cookie step2:载入cookie step3:放飞自我 关于phantomJS浏览器的问题 源码 站点分析 ...

  7. array_multisort 对关联数组进行排序的问题 PHP

    我们在php的数组操作中经常用到对数组进行排序的问题,这里说的是对关联数组进行排序需要用到函数 array_multisort . array_multisort(array_column($arr, ...

  8. k-近邻算法原理入门-机器学习

    //2019.08.01下午机器学习算法1——k近邻算法1.k近邻算法是学习机器学习算法最为经典和简单的算法,它是机器学习算法入门最好的算法之一,可以非常好并且快速地理解机器学习的算法的框架与应用.2 ...

  9. 七 联系人与客户多对一配置&联系人列表&分页查询联系人

    联系人管理: 联系人实体类: package com.mycrm.domain; /** * 联系人的实体 * @author jt *CREATE TABLE `cst_linkman` ( `lk ...

  10. JavaScript 词法句法

    JavaScript 中的几个重要概念 JavaScript 遵循 ECMA-262 规范,目前其最新版是 ECMAScript 2018,而获得所有主流浏览器完全支持的则是 ECMAScript 5 ...