068 Oozie任務調度框架


一:概述

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.運行結果

  

 

  

 

 

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM