一:概述
1.大数据协作框架

2.Hadoop的任务调度
这个是常见的任务调度框架。

3.azkaban

4..Oozie的三大功能
Oozie Workflow jobs :工作流任务,可以生成DAG图
Oozie Coordinator jobs:可以定时调度
Oozie Bundle:多个coordinator的集合,或者多个workflow的集合

5.Oozie的架构
控制流节点
起始,分支,并发,汇合,结束
动作节点action
执行的job。例如,mapreduce action,hive action ,shell action

6.Oozie的结构实现
oozie server:可以实现界面化,同时,监控hadoop。

7.oozie的细节架构

二:安装部署
1.上传
官网的说法:
在quick start中。

上传:

2.解压

3.配置Hadoop代理core-site.xml
官网:

配置:

4.启动Hadoop集群
5.解压hadooplib
官网说法:

将会生成:oozie-4.0.0-cdh5.3.6

6.生成
进入oozie-4.0.0-cdh5.3.6,果然发现有官网说说的hadooplibs。

7.创建libext文件
官网上的说法:

操作:

8.拷贝hadooplib的jar包到libext中
只拷贝jar。

9.拷贝js包到libext中
js的作用:

操作:

10.创建sharelib库:
HDFS,用于运行所有job的依赖
官网上的步骤:

命令:
bin/oozie-setup.sh sharelib create -fs hdfs://hadoop-senior02.ibeifeng.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

HDFS::

11.打包
bin/oozie-setup.sh prepare-war

12.初始化数据库


13.启动
多了一个Bootstrap进程。

回来补充截图:

14.web端窗口
端口:11000

三:运行官网的任务流
1.官网

2.解压家目录下的oozie-examples.tar.gz
官网的设置:

解压:
tar -zxvf oozie-examples.tar.gz
将会生成examples
3.进入examples,找到将要运行的mapreduce项目
job.properties:mapreduce运行需要的配置项,指定workflow的地址,申明相关变量
workflow.xml:实际运行的workflow

4.修改job.properties配置项
注意的是:jobTracker是hadoop1的,现在使用的是resourcemanager,内部端口是8032.
oozie.wf.application.path的路径是HDFS上的路径,指定了workflow的地址。

位置:

5.修改oozie.site文件、
因为在找包的时候,会找本地的配置环境。
*=不能删除。

6.启动hadoop,并上传在家目录下examples项目
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/examples examples

7.启动
bin/oozie job -oozie http://linux-hadoop3.ibeifeng.com:11000/oozie -config examples/apps/map-reduce/job.properties -run
注意点:需要启动yarn。

启动了两个mapreduce任务。

8.总结
-》bin/oozie job -oozie http://hadoop-senior02.ibeifeng.com:11000/oozie -config examples/apps/map-reduce/job.properties -run
提交任务
-》oozie读取job.properties
-》查找需要运行的wf的地址,将相应变量传递给wf
-》读取wf的文件
-》start节点
-》action节点
-》OK-》end
-》error-》kill
-》程序运行需要读取依赖的jar包
lib目录
-》全局则需要sharelib的jar包支持
四:自定义wordcount任务流
1.新建目录
在家目录i下新建application,在下面建项目wc-wf(这个直接拷贝mapreduce的文件)

2.检测wordcount的jar包是否可以使用
3.HDFS上新建input目录,上传wc.inpu

4.上传wc2.jar
目录/etc/opt/datas
5.在yarn上运行

6.证明jar包没有问题

7.修改job.properties

8.修改workflow.xml
关于查找configuration,这个可以去刚刚运行的yarn中的程序,查看19888中的cinfiguration。
因为,这个需要和jar中的配置一样,是mapreduce2.
需要修改:队列的名称,map与reduce的class,map与reduce的输出类型。
这个需要哪些参数,取决于jar中的friver需要的参数。


9.上传wc2.jar到wc-wf中的lib中
其他的lib可以删除。

10.上传到HDFS上运行
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/ /
11.运行
官网上推荐的运行命令,声明一下环境变量,就可以不使用-oozie参数。
export OOZIE_URL="http://linux-hadoop3.ibeifeng.com:11000/oozie"
bin/oozie job -config applications/wc-wf/job.properties -run

12.结果


五:自定义shell action的workflow
1.拷贝官方的shell,并命名为shell-wf

2.修改job.properties

3.在shell-wf中新建oozie.sh

4.修改workflow.xml
主要是sh文件的绝对路径。

5.完成oozie.sh
在oozie中,必须写#!/bin/bash
因为这个sh要在机器上执行。

6.上传到HDFS
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/shell-wf/ /applications
7.运行
bin/oozie job -config applications/shell-wf/job.properties -run
8.结果

六:DAG图的设计
1.拷贝wc-wf,并该名为dag-wf

2.将shell-wf中 的.sh拷贝到dag-wf中

3.修改job.properties

4.修改oozie.sh

5.修改workflow.xml

6.上传
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/dag-wf/ /applications
7.运行
bin/oozie job -config applications/dag-wf/job.properties -run
8.结果

9.HDFS上

七:修改linux时区
1.说明
因为,下面的coordinate的会使用。
让时区变成中国的时区。

2.查看
默认的是UTC。

2.如果不是+0800,则需要重新生成
在linux中删除:
rm -rf /etc/localtime
重新生成,建立软连接:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3.修改时间

4.在oozie.site中修改时区

5.在js中修改时区
因为web界面上的时间不对应,考虑到当时拷贝的js包。在oozie-server中的webapps中。

6.重新启动oozie
八:编写coordinate
》基于时间的任务调度
起始时间
终止时间
频率
》基于数据可用性的调度
文件是否存在
判断数据是否符合标准
》执行顺序
job.properties
coordinator.xml:完成时间的封装,然后指向workflow.xml
1.复制

2.修改job.properties
指向两个地址,workflow.xml,coordinator.xml
关于日期的配置,可以参考官网Datetime。

3.修改coordinator.xml
下面修改频率。
以及,时区。

4.修改oozie.xml
因为,oozie的最小时间是5分钟。

5.重启oozie
6.上传到HDFS
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/cron-wf/ /applications
7.运行
bin/oozie job -config applications/cron-wf/job.properties -run
8.结果
任务的调度特点:包头不包尾。


九:支持crontab的任务调度
上面的格式不仅支持,linux 的crontab格式也支持。
1.拷贝

2.修改job.properties

3.修改coordinate

4.上传
bin/hdfs dfs -put /etc/opt/cdh-5.3.6/oozie-4.0.0-cdh5.3.6/applications/crontab/ /applications
5.运行
bin/oozie job -config applications/crontab/job.properties -run
6.运行结果

