oozie编写一个小案例

准备工作  拷贝原来的模板

1 mkdir oozie-apps
2 cd oozie-apps/
3 cp -r ../examples/apps/mar-reduce .
4 mv map-reduce mr-wordcount-wf   

配置文件修改

workflow.xml :

 1 <!--
 2   Licensed to the Apache Software Foundation (ASF) under one
 3   or more contributor license agreements.  See the NOTICE file
 4   distributed with this work for additional information
 5   regarding copyright ownership.  The ASF licenses this file
 6   to you under the Apache License, Version 2.0 (the
 7   "License"); you may not use this file except in compliance
 8   with the License.  You may obtain a copy of the License at
 9
10        http://www.apache.org/licenses/LICENSE-2.0
11
12   Unless required by applicable law or agreed to in writing, software
13   distributed under the License is distributed on an "AS IS" BASIS,
14   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   See the License for the specific language governing permissions and
16   limitations under the License.
17 -->
18 <workflow-app xmlns="uri:oozie:workflow:0.5" name="mr-wordcount-wf">
19     <start to="mr-node-wordcount"/>
20     <action name="mr-node-wordcount">
21         <map-reduce>
22             <job-tracker>${jobTracker}</job-tracker>
23             <name-node>${nameNode}</name-node>
24             <prepare>
25                 <delete path="${nameNode}/${oozieDataRoot}/${outputDir}"/>
26             </prepare>
27             <configuration>
28                 <property>
29                     <name>mapred.mapper.new-api</name>
30                     <value>true</value>
31                 </property>
32                 <property>
33                     <name>mapred.reducer.new-api</name>
34                     <value>true</value>
35                 </property>
36                 <property>
37                     <name>mapreduce.job.queuename</name>
38                     <value>${queueName}</value>
39                 </property>
40                 <property>
41                     <name>mapreduce.job.map.class</name>
42                     <value>com.ibeifeng.hadoop.senior.mapreduce.WordCount$WordCountMapper</value>
43                 </property>
44                 <property>
45                     <name>mapreduce.job.reduce.class</name>
46                     <value>com.ibeifeng.hadoop.senior.mapreduce.WordCount$WordCountReducer</value>
47                 </property>
48
49                 <property>
50                     <name>mapreduce.map.output.key.class</name>
51                     <value>org.apache.hadoop.io.Text</value>
52                 </property>
53                 <property>
54                     <name>mapreduce.map.output.value.class</name>
55                     <value>org.apache.hadoop.io.IntWritable</value>
56                 </property>
57                 <property>
58                     <name>mapreduce.job.output.key.class</name>
59                     <value>org.apache.hadoop.io.Text</value>
60                 </property>
61                 <property>
62                     <name>mapreduce.job.output.value.class</name>
63                     <value>org.apache.hadoop.io.IntWritable</value>
64                 </property>
65                 <property>
66                     <name>mapreduce.input.fileinputformat.inputdir</name>
67                     <value>${nameNode}/${oozieDataRoot}/${inputDir}</value>
68                 </property>
69                 <property>
70                     <name>mapreduce.output.fileoutputformat.outputdir</name>
71                     <value>${nameNode}/${oozieDataRoot}/${outputDir}</value>
72                 </property>
73             </configuration>
74         </map-reduce>
75         <ok to="end"/>
76         <error to="fail"/>
77     </action>
78     <kill name="fail">
79         <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
80     </kill>
81     <end name="end"/>
82 </workflow-app>

job.properties :

 1 #
 2 # Licensed to the Apache Software Foundation (ASF) under one
 3 # or more contributor license agreements.  See the NOTICE file
 4 # distributed with this work for additional information
 5 # regarding copyright ownership.  The ASF licenses this file
 6 # to you under the Apache License, Version 2.0 (the
 7 # "License"); you may not use this file except in compliance
 8 # with the License.  You may obtain a copy of the License at
 9 #
10 #      http://www.apache.org/licenses/LICENSE-2.0
11 #
12 # Unless required by applicable law or agreed to in writing, software
13 # distributed under the License is distributed on an "AS IS" BASIS,
14 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 # See the License for the specific language governing permissions and
16 # limitations under the License.
17 #
18
19 nameNode=hdfs://hadoop:8020
20 jobTracker=hadoop:8032
21 queueName=default
22 oozieAppsRoot=user/root/oozie-apps
23 oozieDataRoot=user/root/oozie/datas
24
25 oozie.wf.application.path=${nameNode}/${oozieAppsRoot}/mr-wordcount-wf/workflow.xml
26
27 inputDir=mr-wordcount-wf/input
28 outputDir=mr-wordcount-wf/output

把自己写的MapReduce的jar 放上去

把改好的文件放入到hdfs

1 /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hadoop dfs -put oozie-apps/ oozie-apps

准备测试数据

在hdfs创建输入目录 并把刚创建的文件上传

1 /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hadoop dfs -mkdir -p oozie/datas/mr-wordcount-wf/input
3 /opt/cdh-5.3.6/hadoop-2.5.0-cdh5.3.6/bin/hadoop dfs -put test-mapred.txt oozie/datas/mr-wordcount-wf/input

运行oozie

1 export OOZIE_URL=http://localhost:11000/oozie
2 bin/oozie job -config oozie-apps/mr-wordcount-wf/job.properties -run

查看输出结果

原文件     统计后的文件

http://blog.csdn.net/wiborgite/article/details/78585689

时间: 2024-10-11 02:49:28

oozie编写一个小案例的相关文章

编写一个小Servlet程序

1.编写一个java类,此类继承HttpServlet 继承:右击鼠标,source-override/Implement Methods,选择 HttpServlet 2.重写doGet()和doPost()方法 //继承于HttpServletpublic class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse

编写一个小程序计算圆周率π的值

/** * 假设这个圆的半径是1.那么圆的面积就是π而外接正方形的面积是4. * 随便产生正方形中的一个点. * 该点落在这个圆内的概率是 * 圆面积/正方形面积 = π/4 * */ public class GetValueπ { public static void main(String[] args) { final int Number_Of_Trials = 10000000; int numberOfHits = 0; for(int i = 0;i < Number_Of_Tr

extJs学习基础5 理解mvvm的一个小案例

今天很是幸运,看到了一位大神的博客,学习了不少的东西.太感谢了.(满满的都是爱啊) 建议去学习这个大神的博客,真心不错. 博客地址:http://blog.csdn.net/column/details/extjs5.html?&page=1 首先要建立一个简单的项目,我是使用的 Sencha Architect 3自动生成的 app下面的文件 在视图文件中建立 MyViwepost.js (view文件中) 1 Ext.define('MyApp.view.MyViewport', { 2 e

ios教程(3)--UIImageView、UILabel、UIButton实现一个小案例

等一下我们就要做成这样的效果 下面看代码(代码没有优化过 基本都看动) (哒哒:刚刚看上去觉得好难啦): // // ViewController.m // 03图片浏览器(代码创建) // // Created by sunda on 15/7/1. // Copyright (c) 2015年 sunda. All rights reserved. // #import "ViewController.h" @interface ViewController () /** * 序号

第八课学习做的一个小案例,用来去除底部导航最后一个|

全部代码如下 <style> .foot{ width: 100%;margin:0 auto; height: 80px; background: #5283ff;} #footnav{ list-style: none;display: flex;justify-content: center;} #footnav li{ font-size: 18px; padding-top:25px;} #footnav li a{ color: #fff6f2; text-decoration:

Android笔记2——开发前奏2工程目录介绍和一个小应用

转载请注明http://www.cnblogs.com/devtrees/p/4405519.html 一.创建第一个应用HelloWorld (一)创建步骤: 1.New出一个Android Application Project 三种方式 1): 2): 3): 2.会出现下图的窗口: 分别是:应用名:给用户看的 工程名:开发工具中显示的项目名 包名: 客户端中设置->应用->应用列表中显示的名字 兼容的最低版本: 兼容的最高版本: 开发基于的版本:(一般将兼容的最高版本和开发所基于的版本

8天入门docker系列 —— 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署

原文:8天入门docker系列 -- 第五天 使用aspnetcore小案例熟悉容器互联和docker-compose一键部署 这一篇继续完善webnotebook,如果你读过上一篇的内容,你应该知道怎么去挂载webnotebook日志和容器的远程访问,但是这些还远不够,webnotebook 总要和一些数据库打交道吧,比如说mysql,mongodb,redis,通常情况下这些存储设备要么是以容器的方式承载,要么是由DBA在非容器环境下统一管理. 一:webnotebook连接容器redis

小案例之随机点名系统

随机点名系统 近日,本人学习了对象和计时器,就想写一个小案例随机点名系统,这个小案例其实很简单只需要生成随机下标,从数组中取值并运用innerHTML方法将获取到的信息显示到网页上(这里有人会提出疑问,字符串也可以遍历为什么不用字符串呢?原因很简单字符串无法分隔每个名字.)话不多说直接上代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></ti

ie8 下margin-top失效的小案例

一个小案例,是关于IE8下的margin-top的失效问题,巨日代码如下: 正常的chrome浏览器下的显示如下: margin-top=10px,正常显示 但是在ie8下,最终样式如下: margin-top已经不翼而飞. 这类问题的具体原因,不太清楚,等待后续的学习. 具体的改善措施,就是:给父级元素wrap添加display:inline-block; 就解决了.