Oozie 快速入门

简介:

设想一下,当你的系统引入了spark或者hadoop以后,基于Spark和Hadoop已经做了一些任务,比如一连串的Map Reduce任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执行成功后,再手动执行第二个任务。是不是很烦! 这个时候Oozie(驯象人,典故来自评论一楼)就派上用场了,它可以把多个任务组成一个工作流,自动完成任务的调用。

简介

Oozie是一个基于工作流引擎的服务器,可以在上面运行Hadoop的Map Reduce和Pig任务。它其实就是一个运行在Java Servlet容器(比如Tomcat)中的Javas Web应用。

对于Oozie来说,工作流就是一系列的操作(比如Hadoop的MR,以及Pig的任务),这些操作通过有向无环图的机制控制。这种控制依赖是说,一个操作的输入依赖于前一个任务的输出,只有前一个操作完全完成后,才能开始第二个。

Oozie工作流通过hPDL定义(hPDL是一种XML的流程定义语言)。工作流操作通过远程系统启动任务。当任务完成后,远程系统会进行回调来通知任务已经结束,然后再开始下一个操作。

Oozie工作流包含控制流节点以及操作节点

控制流节点定义了工作流的开始和结束(start,end以及fail的节点),并控制工作流执行路径(decision,fork,join节点)。操作节点是工作流触发计算\处理任务的执行,Oozie支持不同的任务类型——hadoop map reduce任务,hdfs,Pig,SSH,eMail,Oozie子工作流等等。Oozie可以自定义扩展任务类型。

Oozie工作流可以参数化的方式执行(使用变量${inputDir}定义)。当提交工作流任务的时候就需要同时提供参数。如果参数合适的话(使用不同的目录)就可以定义并行的工作流任务。

总结来说

  • Oozie是管理Hadoop作业的工作流调度系统
  • Oozie的工作流是一系列的操作图
  • Oozie协调作业是通过时间(频率)以及有效数据触发当前的Oozie工作流程
  • Oozie是针对Hadoop开发的开源工作流引擎,专门针对大规模复杂工作流程和数据管道设计
  • Oozie围绕两个核心:工作流和协调器,前者定义任务的拓扑和执行逻辑,后者负责工作流的依赖和触发。

WordCount工作流例子

流程图

hPDL流程的定义:

<workflow-app name='wordcount-wf' xmlns="uri:oozie:workflow:0.1">
    <start to='wordcount'/>
    <action name='wordcount'>
        <map-reduce>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <configuration>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>org.myorg.WordCount.Map</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>org.myorg.WordCount.Reduce</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>${inputDir}</value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>${outputDir}</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to='end'/>
        <error to='end'/>
    </action>
    <kill name='kill'>
        <message>Something went wrong: ${wf:errorCode('wordcount')}</message>
    </kill/>
    <end name='end'/>
</workflow-app>

参考

本文转自博客园xingoo的博客,原文链接:Oozie 快速入门,如需转载请自行联系原博主。
相关文章
|
8月前
|
存储 Java Linux
10分钟入门Flink--安装
本文介绍Flink的安装步骤,主要是Flink的独立部署模式,它不依赖其他平台。文中内容分为4块:前置准备、Flink本地模式搭建、Flink Standalone搭建、Flink Standalong HA搭建。
10分钟入门Flink--安装
|
消息中间件 分布式计算 网络协议
Spark Streaming 快速入门(实操)
Spark Streaming 快速入门(实操)
333 0
Spark Streaming 快速入门(实操)
|
1月前
|
SQL XML 分布式计算
Oozie功能
Oozie是一个基于Hadoop的调度器,它可以用来管理和协调Hadoop作业、Pig作业、Hive作业、Shell脚本等。【2月更文挑战第21天】
17 2
|
1月前
|
分布式计算
mapreduce 快速入门
mapreduce 案例 【2月更文挑战第14天】
25 2
|
6月前
|
SQL 分布式计算 Kubernetes
Hadoop on K8s 编排部署进阶篇
Hadoop on K8s 编排部署进阶篇
Hadoop on K8s 编排部署进阶篇
|
4月前
|
消息中间件 资源调度 Kafka
2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)
2021年最新最全Flink系列教程_Flink快速入门(概述,安装部署)(一)(JianYi收藏)
59 0
|
4月前
|
缓存 分布式计算 Java
Hbase快速入门(安装部署)
Hbase快速入门(安装部署)
117 0
|
SQL 分布式计算 Hadoop
Apache Oozie- 概述架构介绍|学习笔记
快速学习 Apache Oozie- 概述架构介绍
284 0
Apache Oozie- 概述架构介绍|学习笔记
|
XML 缓存 分布式计算
集成 Oozie 服务&amp;集成 Hbase 服务 | 学习笔记
快速学习 集成 Oozie 服务&amp;集成 Hbase 服务
78 0
集成 Oozie 服务&amp;集成 Hbase 服务 | 学习笔记
|
分布式计算 Hadoop
Hadoop快速入门——第四章、zookeeper安装
Hadoop快速入门——第四章、zookeeper安装
89 0
Hadoop快速入门——第四章、zookeeper安装

热门文章

最新文章