导图社区 Oozie编程框架知识学习笔记
Oozie编程框架知识学习笔记:上传任务配置:bin/hadoop fs -rmr /user/atguigu/oozie-apps/;bin/hadoop fs -mkdir /user/atguigu/oozie-apps/shells。
编辑于2022-11-10 17:42:18 广东Oozie编程框架知识学习笔记
Oozie概述
Oozie定义及作用
定义
一个基于工作流引擎的开源框架,提供对Hadoop MapReduce、Pig Jobs的任务调度与协调
作用
主要用于定时调度任务,多任务可以按照执行的逻辑顺序调度
Oozie的功能模块
Workflow
作用
顺序执行流程节点,支持fork(分支多个节点),join(合并多个节点为一个)
常用节点
控制流节点(Control Flow Nodes)
控制流节点一般都是定义在工作流开始或者结束的位置,比如start,end,kill等。以及提供工作流的执行路径机制,如decision,fork,join等。
动作节点(Action Nodes)
负责执行具体动作的节点,比如:拷贝文件,执行某个Shell脚本等等。
Coordinator
作用
定时触发workflow
Bundle
作用
绑定多个Coordinator
Oozie的使用
Oozie调度shell脚本
本地操作
创造工作路径
mkdir -p oozie-apps/shell
创建两个文件
touch workflow.xml
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
<exec>mkdir</exec>
<argument>/opt/module/d</argument>
<message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
touch job.properties
#HDFS地址
nameNode=hdfs://hadoop102:8020
#ResourceManager地址
jobTracker=hadoop103:8032
#队列名称
queueName=default
examplesRoot=oozie-apps
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shell
上传任务配置
/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/hadoop fs -put oozie-apps/ /user/atguigu
执行任务
bin/oozie job -oozie http://hadoop131:11000/oozie -config oozie-apps/shell/job.properties -run
杀死任务
bin/oozie job -oozie http://hadoop131:11000/oozie -kill xxx(任务号)
Oozie逻辑调度执行多个Shell脚本
本地操作
创造工作路径
mkdir -p oozie-apps/shells
编辑两个文件
job.properties
nameNode=hdfs://hadoop102:8020
jobTracker=hadoop103:8032
queueName=default
examplesRoot=oozie-apps
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/shells
workflow.xml
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
<exec>mkdir</exec>
<argument>/opt/module/d1</argument>
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
<exec>mkdir</exec>
<argument>/opt/module/d2</argument>
<message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
上传任务配置
bin/hadoop fs -rmr /user/atguigu/oozie-apps/
bin/hadoop fs -mkdir /user/atguigu/oozie-apps/shells
bin/hadoop fs -put oozie-apps/shells /user/atguigu/oozie-apps/shells
执行任务
bin/oozie job -oozie http://hadoop131:11000/oozie -config oozie-apps/shells/job.properties -run
Oozie调度MapReduce
https://oozie.apache.org/docs/4.0.0/DG_CommandLineTool.html#Submitting_a_map-reduce_job
本地操作
拷贝官方模板到ozzie-apps下
oozie自带一个叫做oozie-examples.tar.gz的压缩包,解压进入apps可以看到各个案例
cp -r /opt/module/cdh/ oozie-4.0.0-cdh5.3.6/examples/apps/map-reduce/ oozie-apps/
拷贝jar包
cp -a /opt /module/cdh/hadoop-2.5.0-cdh5.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar oozie-apps/map-reduce/lib
配置文件
job.properties
nameNode=hdfs://hadoop102:8020
jobTracker=hadoop103:8032
queueName=default
examplesRoot=oozie-apps
#hdfs://hadoop102:8020/user/admin/oozie-apps/map-reduce/workflow.xml
oozie.wf.application.path=${nameNode}/user/${user.name}/${examplesRoot}/map-reduce/workflow.xml
outputDir=map-reduce
workflow.xml
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
<name>mapred.mapper.new-api</name>
<value>true</value>
<name>mapred.reducer.new-api</name>
<value>true</value>
<name>mapreduce.job.output.key.class</name>
<value>org.apache.hadoop.io.Text</value>
<name>mapreduce.job.output.value.class</name>
<value>org.apache.hadoop.io.IntWritable</value>
<name>mapred.input.dir</name>
<value>/input/</value>
<name>mapred.output.dir</name>
<value>/output/</value>
<name>mapreduce.job.map.class</name>
<value>org.apache.hadoop.examples.WordCount$TokenizerMapper</value>
<name>mapreduce.job.reduce.class</name>
<value>org.apache.hadoop.examples.WordCount$IntSumReducer</value>
<name>mapred.map.tasks</name>
<value>1</value>
<message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
上传任务配置
opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put oozie-apps/map-reduce/ /user/admin/oozie-apps
执行任务
bin/oozie job -oozie http://hadoop102:11000/oozie -config oozie-apps/map-reduce/job.properties -run
Oozie定时任务/循环任务
检查时区
date -R
如果并非东八区,则进行如下操作
主机
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate pool.ntp.org
vi /etc/ntp.conf
# vi /etc/ntp.conf
去掉下面这行前面的# ,并把网段修改成自己的网段:
restrict 192.168.122.0 mask 255.255.255.0 nomodify notrap
注释掉以下几行:
#server 0.centos.pool.ntp.org
#server 1.centos.pool.ntp.org
#server 2.centos.pool.ntp.org
把下面两行前面的#号去掉,如果没有这两行内容,需要手动添加
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
service ntpd start
chkconfig ntpd on
从机
service ntpd stop
chkconfig ntpd off
ntpdate hadoop102
crontab -e
*/10 * * * * /usr/sbin/ntpdate hadoop102
service crond restart
配置oozie-site.xml文件
属性:oozie.processing.timezone
属性值:GMT+0800
解释:修改时区为东八区区时
修改js
vi /opt/module/oozie-4.0.0-cdh5.3.6/oozie-server/webapps/oozie/oozie-console.js
function getTimeZone() {
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());
return Ext.state.Manager.get("TimezoneId","GMT");
}
重启oozie
拷贝官方模板
cp -r examples/apps/cron/ oozie-apps/
配置文件
job.properties
nameNode=hdfs://hadoop102:8020
jobTracker=hadoop103:8032
queueName=default
examplesRoot=oozie-apps
oozie.coord.application.path=${nameNode}/user/${user.name}/${examplesRoot}/cron
#start:必须设置为未来时间,否则任务失败
start=2017-07-29T17:00+0800
end=2017-07-30T17:00+0800
workflowAppUri=${nameNode}/user/${user.name}/${examplesRoot}/cron
EXEC=p1.sh
coordinator.xml
<app-path>${workflowAppUri}</app-path>
<name>jobTracker</name>
<value>${jobTracker}</value>
<name>nameNode</name>
<value>${nameNode}</value>
<name>queueName</name>
<value>${queueName}</value>
workflow.xml
<job-tracker>${jobTracker}</job-tracker>
<name-node>${nameNode}</name-node>
<name>mapred.job.queue.name</name>
<value>${queueName}</value>
<exec>${EXEC}</exec>
<file>/user/atguigu/oozie-apps/cron/${EXEC}#${EXEC}</file>
<message>Shell action failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
上传任务配置
/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/bin/hdfs dfs -put oozie-apps/cron/ /user/atguigu/oozie-apps
启动任务
bin/oozie job -oozie http://hadoop102:11000/oozie -config oozie-apps/cron/job.properties -run
注意事项
Oozie的使用需要开启的服务
hdfs
yarn
historyserver
Oozie的依赖程序
待补充,可能理解还不齐全
Tomcat
MySQL
ExJS库
Oozie写作指南