1. 程式人生 > >作業流 oozie調度框架的配置與使用(一)

作業流 oozie調度框架的配置與使用(一)

大數據 hadoop oozie 調度框架

  • 一: 常見的調度框架
  • 一: oozie 概述與功能
  • 二: oozie 安裝與配置

一: 常見的作用調度框架

1.1 linux 下面的計劃任務

在工作量比較下的情況下 使用linux 下的crond 使用定制計劃任務

*   *   *   *   *    後面接調度 job 的命令 

分  時 日  月  周

hive  -e " "  執行一個sql 命令

hive  -f " "  執行一個sql 腳本

結合 crond 使用

1.2 常見的協作調度框架:

1.2.1 Azkaban 框架

參考資料
http://blog.csdn.net/jinshuaiwang/article/details/40426743

https://azkaban.github.io/

1.2.2 oozie 框架

官網:
http://oozie.apache.org/

1.2.3 Zeus 框架 (淘寶開源框架)

https://github.com/michael8335/zeus2

二:oozie 概述與功能

2.1 oozie 概述與功能


  2.1.1 一個基於工作流引擎的開源框架,是由Cloudera公司貢獻給Apache的,它能夠提供對Hadoop MapReduce和Pig Jobs的任務調度與協調。Oozie需要部署到Java Servlet容器中運行。  

 2.1.2 Oozie工作流定義,同JBoss jBPM提供的jPDL一樣,也提供了類似的流程定義語言hPDL,通過XML文件格式來實現流程的定義。對於工作流系統,一般都會有很多不同功能的節點,比如分支、並發、匯合等等。

 2.1.3 Oozie定義了控制流節點(Control Flow Nodes)和動作節點(Action Nodes),其中控制流節點定義了流程的開始和結束,以及控制流程的執行路徑(Execution Path),如decision、fork、join等;而動作節點包括Hadoop map-reduce、Hadoop文件系統、Pig、SSH、HTTP、eMail和Oozie子流程。

2.2 oozie 簡易架構

技術分享圖片

2.3 oozie 的三種引擎

 Workflow:順序執行流程節點
 Coordinator:定時觸發workflow
 Bundle Job:綁定多個coordinator

2.3.1 workflow 架構

技術分享圖片

2.3.2 Oozie coordinator生命周期

技術分享圖片

2.3.3 Bundle Job

技術分享圖片

2.4 oozie server 組建:

技術分享圖片

技術分享圖片


三: oozie 的安裝與配置:

3.1 安裝oozie-4.0.0-cdh-5.3.6.tar.gz

tar -zxvf oozie-4.0.0-cdh-5.3.6.tar.gz 
mv oozie-4.0.0.-cdh-5.3.5-bin yangyang/oozie

3.2 配置oozie 與hadoop 整合

編輯core-site.xml 增加:

 <property>
    <name>hadoop.proxyuser.hadoop.hosts</name>
    <value>namenode01.hadoop.com</value>
 </property>
 <property>
    <name>hadoop.proxyuser.hadoop.groups</name>
    <value>*</value>
 </property>

3.3 解壓oozie 的lib 包

cd /home/hadoop/yangyang/oozie
tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz
cd oozie-4.0.0-cdh5.3.6/
mv hadooplibs /home/hadoop/yangyang/oozie/

3.4 創建libext 文件與上傳ext 文件

cd /home/hadoop/yangyang/oozie

mkdir libext

cd /home/hadoop/yangyang/oozie/hadooplibs/hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6

cp -p * /home/hadoop/yangyang/oozie/libext 

cd /home/hadoop/yangyang/oozie/libext

rz ext-2.2.zip

3.5 安裝mysql 數據庫並生成mysql數據表

安裝mysql 與拷貝驅動包
yum install mysql  (之前已經安裝)

cd /home/hadoop/mysql-connector-java-5.1.27

cp -p mysql-connector-java-5.1.27-bin.jar /home/hadoop/yangyang/oozie/lib/

cp -p mysql-connector-java-5.1.27-bin.jar /home/hadoop/yangyang/oozie/libext/

更改oozie 的配置文件oozie-site.xml 文件

cd /home/hadoop/yangyang/oozie/conf

與mysql 關聯處理

<property>
        <name>oozie.service.JPAService.jdbc.driver</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <property>
        <name>oozie.service.JPAService.jdbc.url</name>
        <value>jdbc:mysql://namenode01.hadoop.com:3306/oozie</value>
    </property>
    <property>
        <name>oozie.service.JPAService.jdbc.username</name>
        <value>root</value>
    </property>
    <property>
        <name>oozie.service.JPAService.jdbc.password</name>
        <value>123456</value>
    </property>
      <property>
        <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
        <value>*=/home/hadoop/yangyang/hadoop/etc/hadoop</value>
    </property> 

在mysql上面創建oozie 數據庫

mysql -uroot -p123456

create database oozie;

技術分享圖片

執行oozie 命令生成數據:

bin/oozie-setup.sh db create -run oozie.sql

技術分享圖片

在mysql查看數據表

技術分享圖片

3.6 用setup命令 生產war 包

bin/oozie-setup.sh prepare-war

技術分享圖片
技術分享圖片

3.7 把當前的目錄包上傳到hdfs 上面

修改oozie-site.xml 

---
<property>
        <name>oozie.service.WorkflowAppService.system.libpath</name>
        <value>/user/oozie/share/lib</value>
    </property>
bin/oozie-setup.sh sharelib create -fs hdfs://namenode01.hadoop.com:8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar.gz

技術分享圖片

3.8 啟動oozie

bin/oozied.sh start

技術分享圖片

3.9 訪問測試:

http://192.168.3.8:11000

技術分享圖片

在hdfs查看lib 包

技術分享圖片
技術分享圖片

作業流 oozie調度框架的配置與使用(一)