oozie是什么

oozie是什么?

一、前言

  我的业务数据在Oracle服务器中存着,在我进行离线任务计算时,需要用到存储于Oracle中的业务数据。夸张点说,我的离线计算任务将持续有一到两个钟头。
在我进行离线计算之前,参与计算的业务数据要保证是最新的。你要让我在计算时查询数据库获取?你怕是要搞事情哦。

  能持续有一到两个钟头的离线计算任务,当然是不可能只是一次MapReduce或者一次Spark能搞定的,也许要进行多次,而且每次都要存在联系,要么后面的一个或者几个需要
依赖前面计算完成的数据,要么后面的几个要等前面几个并行执行完才能进行,反正就是有点复杂。

 当我为这复杂的工作流程恼火时,好心的leader给我指引了一条明道(过程并不是想象的那么明朗,可能是我太菜):他说:“Oozie,用Oozie吧,我要出差几天,你用Oozie处理好这些个调度.”

于是有了以下三点: …

二、Oozie是什么?

 先看看Oozie的图标.读完简介再来看看Oozie的图标

在这里插入图片描述
Oozie官网这样说的:

  Oozie is a workflow scheduler system to manage Apache Hadoop jobs.
  
  Oozie Workflow jobs are Directed Acyclical Graphs (DAGs) of actions.
  
  Oozie Coordinator jobs are recurrent Oozie Workflow jobs triggered by time (frequency) and data availability.
  
  Oozie is integrated with the rest of the Hadoop stack supporting several types of Hadoop jobs out of the box (such as Java map-reduce, Streaming map-reduce, Pig, Hive, Sqoop and Distcp) as well as system specific jobs (such as Java programs and shell scripts).
  
  Oozie is a scalable, reliable and extensible system.

 老板来了,不能写博客了,无耻的我要粘贴下https://blog.csdn.net/zengxiaosen/article/details/5521345这篇博客(侵删),当笔记._

  • Oozie简介:

    • Oozie是一个工作流引擎服务器,用于运行hadoop map/reduce和hive等任务工作流。
    • 同时Oozie还是一个java web程序,运行在java servlet容器中,如tomcat中。
    • Oozie以action为基本单位,可以将多个action构成一个DAG图的模式运行。
    • Oozie工作流通过HPDL(一种通过XML自定义处理的语言)来构造Oozie工作流。
    • 一个oozie服务器主要包括四个服务:Oozie Workflow, Oozie Coordinator, Oozie Bundle 和 Oozie SLA(oozie服务器等级协定)
  • oozie提供的服务主组件:

    • Oozie Workflow:该组件用于定义和执行一个特定顺序的mapreduce,hive和pig作业。
    • Oozie Coordinator:该组件用于支持基于事件,系统资源存在性等条件的workflow的自动化执行。
    • Oozie Bundle:该引擎可以定义和执行“一束”应用,从而提供一个批量化的方法。将一组Coordinator应用程序一起进行管理。
    • Oozie服务器等级协定SLA:该组件支持workflow应用程序执行过程的记录跟踪。

 Oozie使用tomcat等服务器作为web界面展示容器,使用关系型数据库存储Oozie的工作流元数据,默认使用debry,由于debry的缺点,一般情况使用mysql作为oozie的元数据,使用extjs来作为报表展示js框架。

  • workflow工作周期:

    • prep:一个工作流第一次创建就处于prep状态,表示工作流以及创建但是还没有运行。
    • running:当一个已经被创建的工作流job开始执行的时候,就处于running状态。它不会达到结束状态,只能因为出错而结束,或者被挂起。
    • suspended:一个running状态的工作流job会变成suspended状态,而且它会一直处于该状态,除非这个工作流job被重新开始执行或者被杀死。
    • killed:当一个工作流job处于被创建后的状态,或者处于running,suspended状态时,被杀死,则工作流job的状态变为killed状态。
    • failed:当一个工作流job不可预期的错误失败而终止,就会变为failed状态。
  • workflow流控制节点:

    • start节点 xml类型:start 该节点定义一个oozie workflow的起始的节点,一个workflow只能有且只有一个start节点。
    • end节点 xml类型:end 定义一个workflow的结束节点。
    • decision节点 xml类型:decision 该节点用于描述“switch-case”逻辑
    • fork节点 xml类型:fork 该节点会将多个执行流程分为多个并发操作。
    • join节点 xml类型:join 等待前面的fork节点指定的所有action完成。
    • sub-workflow节点 xml类型:sub-workflow 该节点会调用一个子workflow
    • kill节点 xml类型:kill 该节点会是oozie服务器杀死当前的workflow作业
    • 当然也可以是java动作,pig动作,mapreduce动作。
  • workflow扩展action动作:

    • hive shell email ssh sqoop distcp
  • workflow异步操作:
     workflow中的所有异步操作(action)都需要在hadoop集群上以mapreduce作业的方式进行执行。这样充分利用了集群的优点。

     oozie通过两种方式来检查任务是否完成:

    • 回调:当一个任务和一个计算被启动后,会为任务提供一个回调url,该任务执行完成后,会执行回调来通知oozie
    • 轮询:在任务执行回调失败的情况下,无论任何原因,都支持以轮询的方式进行查询。

最后

看完后再去看Oozie的logo,会发现什么?

再次感谢该文章做出的总结.

你可能感兴趣的:(oozie)