一:概述
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.運行結果


