Oozie_示例
Oozie 官方示例
解压oozie-examples.tar.gz
将examples/上传到HDFS家目录
$ bin/hdfs dfs -put /opt/cdh-5.6.3/oozie-4.0.0-cdh5.3.6/examples examples
试运行自带的wordcount示例examples/apps/map-reduce
job-with-config-class.properties
job.properties
lib
workflow-with-config-class.xml
workflow.xml
修改example下/opt/cdh-5.6.3/oozie-4.0.0-cdh5.3.6/examples/apps/map-reduce/
job.properties
nameNode=hdfs://hadoop09-linux-01.ibeifeng.com:8020
jobTracker=hadoop09-linux-01.ibeifeng.com:8032
功能: 指定workflow的地址,声明相关变量
workflow.xml
引用job.properties相关变量
配置工作流
运行一下
$ bin/oozie job -oozie http://hadoop09-linux-01.ibeifeng.com:11000/oozie -config examples/apps/map-reduce/job.properties -run
8088端口会出现两个执行进程,其中一个是launch仅仅执行map程序用于封装oozie
第二个进行执行mr程序
wf运行流程
command 提交任务
oozie读取job.properties
查找需要运行的wf的地址,将相应变量传递给wf
读取wf文件
start 节点
action 节点
OK -> end
error -> kill
读取依赖的jar包(lib目录)
sharelib的jar包支持
自定义实现workcount的workflow
测试wordcount程序
$ bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /input /output
也可用hadopp示例的wordcount
oozie根目录下创建application文件夹,并将examples/apps/map-reduce/复制一份到application,用于配置自定义wordcount程序
上传application文件夹到hdfs(家目录,因为在job.properties下要配置该目录)
添加,修改applicatio/wc-wf目录下配置文件
job.properties
examplesRoot=application/wc-wf
inputDir=input
outputDir=output
workflow.xml
<delete path="${nameNode}/${outputDir}"/>
mapreduce.job.queuename=${queueName}
mapreduce.job.map.class=org.apache.hadoop.wordcount.WCMap
mapreduce.job.reduce.class=org.apache.hadoop.wordcount.WCReduce
mapreduce.map.output.key.class=org.apache.hadoop.io.Text
mapreduce.map.output.value.class=org.apache.hadoop.io.LongWritable
mapreduce.job.output.key.class=org.apache.hadoop.io.Text
mapreduce.job.output.value.class=org.apache.hadoop.io.LongWritable
mapreduce.input.fileinputformat.inputdir=${nameNode}/${inputDir}
mapreduce.output.fileoutputformat.outputdir=${nameNode}/${outputDir}
与mr程序中的driver如出一辙
将复制的application/wc-wf中的lib目录下jar包删除,并把wc.jar放入
重新上传文件运行
$ export OOZIE_URL="http://hadoop09-linux-01.ibeifeng.com:11000/oozie"
$ bin/oozie job -config application/wc-wf/job.properties -run
oozie 任务被kill
查看log日志发现 java.io.IOException: mapreduce.job.map.class is incompatible with map compatability mode
原因没使用 mapred.mapper.new-api = true 与 mapred.reducer.new-api = true
自定义shell的workflow
从example示例中复制一份shell到application,更名为shell-wf
在shell-wf目录中
创建一个shell脚本,简单测试
$HIVE_HOME/bin/hive -e "show databases" >> shell-rs.txt
依据官网文档修改部分配置
job.properties
nameNode=hdfs://hadoop09-linux-01.ibeifeng.com:8020
jobTracker=hadoop09-linux-01.ibeifeng.com:8032
queueName=default
examplesRoot=user/liuwl/application/shell-wf
EXEC=test.sh
oozie.wf.application.path=${nameNode}/${examplesRoot}/workflow.xml
workflow.xml
exec节点后添加
<file>${nameNode}/${examplesRoot}/${EXEC}#${EXEC}</file>
修改ok节点to end节点
上传shell-wf目录到hdfs
测试运行
$ export OOZIE_URL="http://hadoop09-linux-01.ibeifeng.com:11000/oozie"
$ bin/oozie job -config application/wc-wf/job.properties -run
复杂DAG图设计(其实也就是顺序,并发执行多个job)
|----> hive action -->|
start --> MR action --> shell action --> end
|----> spark action -->|
一个简单的workflow: 先执行mraction 运行wordcount程序,然后使用shellaction 移动output下的part文件
复制一份上面的wc-wf文件夹
创建一个shel脚本
#!/bin/bash
HADOOP_HOME=/opt/cdh-5.6.3/hadoop-2.5.0-cdh5.3.6
$HADOOP_HOME/bin/hdfs dfs -mv /output/p* /
修改job.properties与workflow.xml
nameNode=hdfs://hadoop09-linux-01.ibeifeng.com:8020
jobTracker=hadoop09-linux-01.ibeifeng.com:8032
queueName=default
examplesRoot=user/liuwl/application/dag-wf
oozie.wf.application.path=${nameNode}/${examplesRoot}/workflow.xml
inputDir=input
outputDir=output
EXEC=oozie.sh
=====================================================================
添加
<action name="shell-node">
<shell xmlns="uri:oozie:shell-action:0.2">
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<configuration>
<property>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
</property>
</configuration>
<exec>${EXEC}</exec>
<file>${nameNode}/${examplesRoot}/${EXEC}#${EXEC}</file>
</shell>
<ok to="end"/>
<error to="fail"/>
</action>
修改mr-node节点下OK节点为shell-node
测试运行
$ export OOZIE_URL="http://hadoop09-linux-01.ibeifeng.com:11000/oozie"
$ bin/oozie job -config application/dag-wf/job.properties -run
coordinator的编写
基于时间的任务调度(起始时间,终止时间,频率)
关于时区
CST 中国标准时间(China Standard Time)
UTC 协调世界时,又称世界标准时间
GMT 格林日志标准时间
OOZIE默认UTC与GMT本地时间相同,需要改为CST
使用date -R查看 是否为+0800
如果不是
cp /usr/zoneinfo/Asia/Shanghai /etc/localtime # ln -sf ... 或创建软连接
然后修改一下clock文件
vi /etc/sysconfig/clock
ZONE="Asia/Shanghai"
修改oozie的时区
oozie.site.xml
oozie.processing.timezone=GMT+0800
修改ext中js文件
oozie-server/webapps/oozie/oozie-console.js
查找GMT并修改为GMT+0800
重启oozie,清缓存查看页面
拷贝官方示例中的cron并修改
其中
job.properties
nameNode=hdfs://hadoop09-linux-01.ibeifeng.com:8020
jobTracker=hadoop09-linux-01.ibeifeng.com:8032
queueName=default
examplesRoot=user/liuwl/application/cron-wf
oozie.coord.application.path=${nameNode}/${examplesRoot}
start=2016-11-23T17:15+0800
end=2016-11-23T17:20+0800
workflowAppUri=${nameNode}/${examplesRoot}
coordinator.xml
<coordinator-app name="cron-coord" frequency="${coord:minutes(1)}"
start="${start}" end="${end}" timezone="GMT+0800" xmlns="uri:oozie:coordinator:0.2">
执行顺序
job.properties-->coordinator.xml(完成时间封装)-->workflow.xml(运行)
上传并测试运行
$ export OOZIE_URL="http://hadoop09-linux-01.ibeifeng.com:11000/oozie"
$ bin/oozie job -config application/cron-wf/job.properties -run
问题,运行后报错,提示频率值太小,修改
oozie-site.xml添加下
oozie.service.coord.check.maximum.frequency=false
再测试一个使用linux crontb格式的coordinator,改一下coordinator.xml如frequency="*/2 * * * *"
Oozie_示例的更多相关文章
- Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)
本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...
- .NET跨平台之旅:将示例站点升级至 ASP.NET Core 1.1
微软今天在 Connect(); // 2016 上发布了 .NET Core 1.1 ,ASP.NET Core 1.1 以及 Entity Framework Core 1.1.紧跟这次发布,我们 ...
- 通过Jexus 部署 dotnetcore版本MusicStore 示例程序
ASPNET Music Store application 是一个展示最新的.NET 平台(包括.NET Core/Mono等)上使用MVC 和Entity Framework的示例程序,本文将展示 ...
- WCF学习之旅—第三个示例之四(三十)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) ...
- JavaScript学习笔记(一)——延迟对象、跨域、模板引擎、弹出层、AJAX示例
一.AJAX示例 AJAX全称为“Asynchronous JavaScript And XML”(异步JavaScript和XML) 是指一种创建交互式网页应用的开发技术.改善用户体验,实现无刷新效 ...
- XAMARIN ANDROID 二维码扫描示例
现在二维码的应用越来越普及,二维码扫描也成为手机应用程序的必备功能了.本文将基于 Xamarin.Android 平台使用 ZXing.Net.Mobile 做一个简单的 Android 条码扫描示 ...
- iOS之ProtocolBuffer搭建和示例demo
这次搭建iOS的ProtocolBuffer编译器和把*.proto源文件编译成*.pbobjc.h 和 *.pbobjc.m文件时,碰到不少问题! 搭建pb编译器到时没有什么问题,只是在把*.pro ...
- Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四)
示例一:实现通知栏管理 当针对相同类型的事件多次发出通知,作为开发者,应该避免使用全新的通知,这时就应该考虑更新之前通知栏的一些值来达到提醒用户的目的.例如我们手机的短信系统,当不断有新消息传来时,我 ...
- oracle常用函数及示例
学习oracle也有一段时间了,发现oracle中的函数好多,对于做后台的程序猿来说,大把大把的时间还要学习很多其他的新东西,再把这些函数也都记住是不太现实的,所以总结了一下oracle中的一些常用函 ...
随机推荐
- Python之路,Day8 - Python基础 面向对象高级进阶与socket基础
类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...
- 关于Response.Redirect 端口不一致的跳转
如果内网和外网的端口号设置的不相同,那在使用Response.Redirect跳转的时候会无法成功.需要做以下设置: <system.web> <httpRuntime useFul ...
- "传成老树白茶"献礼母亲节 邀市民品茗感受茶文化
5月8日下午,传成老树白茶巡回中国公益品鉴会第七十站,走进福州马尾区东方名城传成老树白茶文化馆. 本次品鉴会活动以“感恩母亲节”为主题,以马尾船政文化为背景,邀福州市民一起品鉴白茶,感受中国茶文化. ...
- ASP.NET中的chart控件绑定SQL Server数据库
网上很多的chart控件的实例都没有绑定数据库,经过一番摸索后,终于实现了chart控件绑定数据库. 首先,在Visual Studio中建立一个网站,新建一个WebForm项目,名称为ChartTe ...
- OpenGL glMultMatrixf() glPushMatrix() glPushMatrix()浅析
我在之前的博客中曾提到过,OpenGL中坐标是采用行向量表示的,与之相对应的是,在矩阵变换中使用的是变换矩阵的转置,并且使用的是后乘的方式.本文直接使用下面的代码来及其后的图示来解释函数 p,li { ...
- wps恢复经典模式
经典模式 情况一: 恢复的方法:点击红色区域 情况二: 恢复的方法:点击红色区域
- Linux Memcached安装以及PHP扩展安装
一:安装libevent 由于memcached安装时,需要使用libevent类库,所以先安装libevent 1.下载 #wget http://www.monkey.org/~provos/ ...
- PermGen space
MyEclipse内存空间不足,调整空间操作: 1.点击"Run"-"Run Configurations",在打开的窗口中点击"Arguments& ...
- 关闭电脑SSD的磁盘碎片整理
小白往往会把机械硬盘时代的习惯带进固态硬盘时代,比如碎片整理.机械硬盘时代砖家最喜欢告诉小白:“系统慢了吧?赶紧碎片整理撒.”小白屁颠屁颠地整理去了.殊不知碎片整理对于SSD来说完全就是种折磨.这种“ ...
- 会议通js
js逻辑: /** * Created by wanglijuan on 2016/12/2. */ $(function () { //登陆后请求数据 // $.ajax({ // url:&quo ...