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