oozie案例——自定义MapReduce workflow

相关运行命令

运行一个应用:
bin/oozie job -oozie http://hadoop-1:11000/oozie -config examples/apps/map-reduce/job.properties -run

杀掉一个job
bin/oozie job -oozie http://hadoop-1:11000/oozie  -kill 0000001-160702224410648-oozie-beif-W

查看job的日志信息
bin/oozie job -oozie http://hadoop-1:11000/oozie -log 0000001-160702224410648-oozie-beif-W

查看job的信息
bin/oozie job -oozie http://hadoop-1:11000/oozie -info 0000001-160702224410648-oozie-beif-W

1.定义job.properties

nameNode=hdfs://hadoop-1:9000
jobTracker=hadoop-1:8032
queueName=default
examplesRoot=mr-wordcount

oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/workflow.xml
outputDir=output-data

2. 定义workflow.xml

<workflow-app xmlns="uri:oozie:workflow:0.2" name="map-reduce-wf">
    <start to="mr-node"/>
    <action name="mr-node">
        <map-reduce>
            <job-tracker>${jobTracker}</job-tracker>
            <name-node>${nameNode}</name-node>
            <prepare>
                <delete path="${nameNode}/user/${wf:user()}/${examplesRoot}/${outputDir}"/>
            </prepare>
            <configuration>
                <property>
                    <name>mapred.job.queue.name</name>
                    <value>${queueName}</value>
                </property>

                <!-- new api flag -->
                <property>
                    <name>mapred.mapper.new-api</name>
                    <value>true</value>
                </property>
                <property>
                    <name>mapred.reducer.new-api</name>
                    <value>true</value>
                </property>

                <!-- map task -->
                <property>
                    <name>mapreduce.job.map.class</name>
                    <value>org.gh.hadoop.mapreduce.WordCount$WCMapper</value>
                </property>
                <property>
                    <name>mapreduce.map.output.key.class</name>
                    <value>org.apache.hadoop.io.Text</value>
                </property>
                <property>
                    <name>mapreduce.map.output.value.class</name>
                    <value>org.apache.hadoop.io.IntWritable</value>
                </property>

                <!-- reduce task -->
                <property>
                    <name>mapreduce.job.reduce.class</name>
                    <value>org.gh.hadoop.mapreduce.WordCount$WCReducer</value>
                </property>
                <property>
                    <name>mapreduce.job.output.key.class</name>
                    <value>org.apache.hadoop.io.Text</value>
                </property>
                <property>
                    <name>mapreduce.job.output.value.class</name>
                    <value>org.apache.hadoop.io.IntWritable</value>
                </property>

                <property>
                    <name>mapred.map.tasks</name>
                    <value>1</value>
                </property>

                <!-- input data dir -->
                <property>
                    <name>mapred.input.dir</name>
                    <value>/user/${wf:user()}/${examplesRoot}/input-data</value>
                </property>

                <!-- output data dir -->
                <property>
                    <name>mapred.output.dir</name>
                    <value>/user/${wf:user()}/${examplesRoot}/${outputDir}</value>
                </property>
            </configuration>
        </map-reduce>
        <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>
时间: 2024-10-01 23:01:00

oozie案例——自定义MapReduce workflow的相关文章

hadoop笔记之MapReduce的应用案例(利用MapReduce进行排序)

MapReduce的应用案例(利用MapReduce进行排序) MapReduce的应用案例(利用MapReduce进行排序) 思路: Reduce之后直接进行结果合并 具体样例: 程序名:Sort.java import java.io.IOException; import java.util.StringTokenizer; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; impo

[Hadoop] - 自定义Mapreduce InputFormat&amp;OutputFormat

在MR程序的开发过程中,经常会遇到输入数据不是HDFS或者数据输出目的地不是HDFS的,MapReduce的设计已经考虑到这种情况,它为我们提供了两个组建,只需要我们自定义适合的InputFormat和OutputFormat,就可以完成这个需求,这里简单的介绍一个从MongoDB中读数据,并写出数据到MongoDB中的一种情况,只是一个Demo,所以数据随便找的一个. 一.自定义InputFormat MapReduce中Map阶段的数据输入是由InputFormat决定的,我们查看org.a

监听器实现案例----自定义session扫描器和统计在线用户人数及用户信息

一.案例一:自定义Session扫描器1.案例说明当一个Web应用创建的Session很多时,为了避免Session占用太多的内存,我们可以选择手动将这些内存中的session销毁,那么此时也可以借助监听器技术来实现.对于拿到 每个session 对象, 判断session的最后一次访问时间 与当前时间 的间隔是否超过 5 分钟, 如果超过就手动销毁 2.实现代码SessionScanner:session对象的监听器 MyTimerTask:定时器timer的任务对象 SessionScann

Android开发案例 - 自定义虚拟键盘

所有包含IM功能的App(如微信, 微博, QQ, 支付宝等)都提供了Emoji表情之类的虚拟键盘,  如下图:    本文只着重介绍如何实现输入法键盘和自定义虚拟键盘的流畅切换, 而不介绍如何实现虚拟键盘, 因为后者实现相对容易, 而前者若实现不好, 则会出现体验的问题, 比如输入区域的视图在切换时会跳动等问题. 知识要点: AndroidManifest.xml: activity属性 android:windowSoftInputMode  InputMethodManager Windo

自定义MapReduce的类型

package org.apache.hadoop.mapreduce.io; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; import org.apache.hadoop.io.WritableComparable; /*** * customize writable eg.order * * @author nele * */ public class OrderWritab

Apache Oozie Coordinator 作业自定义配置定时任务

一,介绍 Oozie是Hadoop的工作流系统,如果使用Oozie来提交MapReduce作业(Oozie 不仅仅支持MapReduce作业,还支持其他类型的作业),可以借助Oozie Coordinator 作业来实现定时运行. 对于Oozie的作业而言,在它提交给Hadoop之前首先需要部署好.即,将配置文件(定时作业是coordinator.xml,workflow作业则是workflow.xml).可执行的jar文件.还有待处理的输入数据上传到HDFS上. 一个典型的workflow作业

HDP 2.2.4 Hue Oozie Editor生成workflow.xml的几点问题

本文原文出处: http://blog.csdn.net/bluishglc/article/details/45888279 严禁任何形式的转载,否则将委托CSDN官方维护权益! 如果你想让你手写的workflow.xml成功的倒入到Hue的Oozie Designer里,你需要注意如下几点: 关于chema的版本:oozie最高只能是0.4,hive-action最高只能是0.2, istcp-action最高只能是0.1!! 对于jobTracker和nameNode属性,hue的oozi

Oozie入门

作者 Boris Lublinsky, Michael Segel ,译者 侯伯薇 发布于 2011年8月18日 |注意:QCon全球软件开发大会(北京)2016年4月21-23日,了解更多详情! 分享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 在Hadoop中执行的任务有时候需要把多个Map/Reduce作业连接到一起,这样才能够达到目的.[1]在Hadoop生态圈中,有一种相对比较新的组件叫做Oozie[2],它让我们可以把多个Map/Reduce作

Oozie简介

在Hadoop中执行的任务有时候需要把多个Map/Reduce作业连接到一起,这样才能够达到目的.[1]在Hadoop生态圈中,有一种相对比较新的组件叫做Oozie[2],它让我们可以把多个Map/Reduce作业组合到一个逻辑工作单元中,从而完成更大型的任务.本文中,我们会向你介绍Oozie以及使用它的一些方式. 什么是Oozie? Oozie是一种Java Web应用程序,它运行在Java servlet容器——即Tomcat——中,并使用数据库来存储以下内容: 工作流定义 当前运行的工作流