`

oozie-工作流例子

 
阅读更多
Fork and Join Example

The following workflow definition example executes 4 Map-Reduce jobs in 3 steps, 1 job, 2 jobs in parallel and 1 job.

The output of the jobs in the previous step are use as input for the next jobs.

Required workflow job parameters:

jobtracker : JobTracker HOST:PORT
namenode : NameNode HOST:PORT
input : input directory
output : output directory
<workflow-app name='example-forkjoinwf' xmlns="uri:oozie:workflow:0.1">
    <start to='firstjob' />
    <action name="firstjob">
        <map-reduce>
            <job-tracker>${jobtracker}</job-tracker>
            <name-node>${namenode}</name-node>
            <configuration>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>org.apache.hadoop.example.IdMapper</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>org.apache.hadoop.example.IdReducer</value>
                </property>
                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>${input}</value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>/usr/foo/${wf:id()}/temp1</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to="fork" />
        <error to="kill" />
    </action>
    <fork name='fork'>
        <path start='secondjob' />
        <path start='thirdjob' />
    </fork>
    <action name="secondjob">
        <map-reduce>
            <job-tracker>${jobtracker}</job-tracker>
            <name-node>${namenode}</name-node>
            <configuration>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>org.apache.hadoop.example.IdMapper</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>org.apache.hadoop.example.IdReducer</value>
                </property>
                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>/usr/foo/${wf:id()}/temp1</value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>/usr/foo/${wf:id()}/temp2</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to="join" />
        <error to="kill" />
    </action>
    <action name="thirdjob">
        <map-reduce>
            <job-tracker>${jobtracker}</job-tracker>
            <name-node>${namenode}</name-node>
            <configuration>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>org.apache.hadoop.example.IdMapper</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>org.apache.hadoop.example.IdReducer</value>
                </property>
                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>/usr/foo/${wf:id()}/temp1</value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>/usr/foo/${wf:id()}/temp3</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to="join" />
        <error to="kill" />
    </action>
    <join name='join' to='finalejob'/>
    <action name="finaljob">
        <map-reduce>
            <job-tracker>${jobtracker}</job-tracker>
            <name-node>${namenode}</name-node>
            <configuration>
                <property>
                    <name>mapred.mapper.class</name>
                    <value>org.apache.hadoop.example.IdMapper</value>
                </property>
                <property>
                    <name>mapred.reducer.class</name>
                    <value>org.apache.hadoop.example.IdReducer</value>
                </property>
                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</value>
                </property>
                <property>
                    <name>mapred.input.dir</name>
                    <value>/usr/foo/${wf:id()}/temp2,/usr/foo/${wf:id()}/temp3
                    </value>
                </property>
                <property>
                    <name>mapred.output.dir</name>
                    <value>${output}</value>
                </property>
            </configuration>
        </map-reduce>
        <ok to="end" />
        <ok to="kill" />
    </action>
    <kill name="kill">
        <message>Map/Reduce failed, error message[${wf:errorMessage()}]</message>
    </kill>
    <end name='end'/>
</workflow-app>
分享到:
评论

相关推荐

    Oozie的安装与配置.docx

    【Oozie的安装与配置】是Hadoop生态系统中的一个重要环节,Oozie是一个工作流调度系统,用于管理和协调Hadoop集群上的各种作业,如MapReduce、Pig、Hive、Spark等。以下是对Oozie安装配置过程的详细解释: 1. **所...

    oozie最简单的安装说明+ExtJS-2.2包【亲测100%成功】

    Oozie工作流定义文件通常使用XML编写,其中包含一系列的行动和控制结构,如决策、循环等。Oozie支持多种作业类型,你可以创建复杂的工作流逻辑来自动化处理Hadoop集群上的任务。 总结,Oozie是一个强大的工作流管理...

    extjs 2.2(oozie需要的)

    Apache Oozie 是一个工作流调度系统,用于管理 Hadoop 生态系统中的作业。它能够协调 Hadoop 相关的作业,如 MapReduce、Pig、Hive 和 Sqoop,以及外部系统如 Java 作业或命令行程序。Oozie 提供了一个用户友好的 ...

    hue工作流使用说明

    - 通过命令行和图形化界面操作Oozie工作流。 - 工作流定义了Hadoop作业的执行顺序,一旦启动,就会按既定顺序执行,直到完成。 - 需要修改job.properties文件,配置任务属性,如执行环境、时间安排等。 - 代理...

    Azkaban任务调度安装配置和使用

    - **复杂的任务调度**:Hadoop领域的常见工作流调度器有Oozie、Azkaban、Cascading等。 ##### 1.4 各种调度工具特性对比 不同工作流调度工具的特点各异,选择适合自身需求的工具非常重要。以下是一些常见的Hadoop...

    Hadoop大数据开发实战-代码.rar

    在压缩包中的代码文件,可能是各个章节的示例程序,涵盖了Hadoop的安装配置、数据输入输出、MapReduce编程模型、Hadoop流(Hadoop Streaming)、Hive数据仓库、Pig脚本语言、HBase分布式数据库、Oozie工作流管理、...

    大数据技术之Azkaban(V3.1).docx

    Azkaban是一款开源的工作流调度系统,主要用于大数据处理任务的管理和执行。在大数据环境中,由于数据处理往往涉及多个...然而,如果项目需要更复杂的工作流管理和高级特性,可能需要考虑像Oozie这样的重量级调度系统。

    Hadoop The Definitive Guide 2 example code

    - Oozie:工作流管理系统,调度Hadoop作业和工作流程。 4. 示例代码实践 - 在本地模式下运行:这适用于初步测试和调试,所有Hadoop进程都在单个节点上运行。 - 在伪分布式模式下运行:模拟分布式环境,但所有...

    Azkaban 大数据任务调度器

    相较于其他工作流调度系统,如Oozie,Azkaban在某些方面如事件通知和灵活性上具有优势。 Azkaban的架构由三个主要部分组成:AzkabanWebServer负责用户认证、项目管理、定时执行和进度跟踪,AzkabanExecutorServer则...

    Hadoop权威指南 示例代码

    7. **Hadoop生态工具**:Hadoop生态系统还包括诸如Sqoop(用于数据导入导出)、Flume(日志收集)和Oozie(工作流管理)等工具。示例会演示如何利用这些工具提高数据处理的效率和自动化程度。 通过研究这些示例代码...

    《Hadoop实战》源码

    6. **其他组件**:除了上述组件,源码可能还涉及Zookeeper(协调服务)、Oozie(工作流调度器)和Sqoop(数据导入导出工具)等Hadoop生态系统的其他组件。 通过这些源码,读者可以学习到如何配置Hadoop环境,编写...

    Hadoop Application Architectures.pdf

    除了数据存储与处理,本书还介绍了如何利用工作流编排和调度工具(例如Apache Oozie)来自动化Hadoop生态系统中的任务调度和工作流管理。Apache Oozie是一个用于管理Hadoop作业的工作流调度系统,能够方便地组织多个...

    hadhoop开发学习

    - **Oozie**:是一个工作流调度系统,用于管理和控制Hadoop上的各种作业。 - **Avro**:是一个数据序列化系统,用于高效地处理数据的序列化和反序列化。 - **Cassandra**:是一个分布式NoSQL数据库系统,能够处理...

    2、azkaban-3.51.0 任务类型(Jobtypes,详细介绍command、java2种类型及示例)

    Azkaban是一款流行的大数据工作流管理工具,用于协调和执行复杂的作业流程。在Azkaban中,作业(Job)可以被定义为不同类型的插件(plugin),以便处理各种任务,如执行Linux命令、Java程序、Hadoop MapReduce作业、...

    英特尔智慧交通解决方案.pptx

    Hadoop之上还有许多应用组件,如Pig、Zookeeper、Hive、HBase、Oozie和Mahout,它们分别提供了数据处理的便利性、系统协调、SQL查询能力、随机实时读写、工作流管理和机器学习功能。这些工具进一步增强了Intel ...

    hadoop 权威指南(第三版)英文版

    本章通过天气数据集的例子介绍了如何使用Unix工具和Hadoop进行数据分析,同时讲解了MapReduce在Java中的实现,以及如何进行任务的伸缩性处理、数据流、合并器函数等高级话题。此外,还涉及了使用Hadoop Streaming...

    大数据hadoop教程

    Oozie是一个工作流调度系统,用于管理和调度Hadoop作业。 综上所述,Hadoop作为一个成熟的大数据处理平台,它不仅仅包含了一个分布式文件系统和一个大数据处理模型,还有着一个非常丰富的技术生态。这使得Hadoop...

Global site tag (gtag.js) - Google Analytics