Azkaban簡介及使用


一、Azkaban概述
    Azkaban是一個分布式工作流管理器,在LinkedIn上實現,以解決Hadoop作業依賴性問題。
    我們有需要按順序運行的工作,從ETL工作到數據分析產品。
    特點:
    1)給用戶提供了一個非常友好的可視化界面->web界面
    2)非常方便的上傳工作流-》打成壓縮包
    3)設置任務間的關系
    4)權限設置-》刪庫到跑路
    5)模塊化
    6)隨時停止和啟動任務
    7)可以查看日志記錄
    
二、與Oozie對比
    和Oozie相對比,azkaban是一個輕量級調度工具。
    企業應用的功能並非小眾的功能可以使用Azkaban。
    1)功能
    兩個任務流調度器可以調度使用mr,java,腳本工作流任務
    都可以進行定時調度...
    2)使用
    az直接傳參
    Oozie直接傳參,支持EL表達式...
    3)定時
    az定時執行任務基於時間
    Oozie任務基於時間和數據
    4)資源
    az有嚴格的權限控制
    Oozie無嚴格權限控制
    
三、Azkaban安裝部署
    1、准備工作
    1)快照
    2)上傳安裝包
    Azkaban Web 服務器:azkaban-web-server-2.5.0.tar.gz
    Azkaban Excutor 執行服務器:azkaban-executor-server-2.5.0.tar.gz
    Azkaban 初始化腳本文件:azkaban-sql-script-2.5.0.tar.gz
    
    cd /root/hd
    mkdir azkaban
    上傳安裝包到/root/hd/azkaban目錄下
    3)解壓重命名
    cd /root/hd/azkaban/
    解壓
    tar -zxvf azkaban-web-server-2.5.0.tar.gz 
    tar -zxvf azkaban-executor-server-2.5.0.tar.gz 
    tar -zxvf azkaban-sql-script-2.5.0.tar.gz 
    刪除安裝包
    rm -f azkaban-executor-server-2.5.0.tar.gz 
    rm -f azkaban-web-server-2.5.0.tar.gz 
    rm -f azkaban-sql-script-2.5.0.tar.gz 
    重命名
    mv azkaban-executor-2.5.0/ executor
    mv azkaban-web-2.5.0/ server
    4)mysql中azkaban腳本導入
    create database azkaban;
    use azkaban;
    source /root/hd/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
    
    2、安裝部署
    1)創建SSL(安全連接)配置
    服務器需要一個證書
    cd /root/hd/azkaban/server
    keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    
    [root@hd09-1 server]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
    輸入密鑰庫口令:  123456(密碼是看不見的)
    再次輸入新口令:  123456
    您的名字與姓氏是什么?
      [Unknown]:  
    您的組織單位名稱是什么?
      [Unknown]:  
    您的組織名稱是什么?
      [Unknown]:  
    您所在的城市或區域名稱是什么?
      [Unknown]:  
    您所在的省/市/自治區名稱是什么?
      [Unknown]:  
    該單位的雙字母國家/地區代碼是什么?
      [Unknown]:  CN
    CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=CN是否正確?
      [否]:  是

    輸入 <jetty> 的密鑰口令 123456
        (如果和密鑰庫口令相同, 按回車):  
    [root@hd09-1 server]#    
    
    2)時間同步設置
    生成時區文件
    tzselect生成
    5->9->1->yes

    拷貝時區文件
    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    集群時間同步
    crt中開啟交互窗口 發送
    sudo date -s '2018-11-29 20:22:39'
    
    3)修改配置文件    azkaban.properties
    cd /root/hd/azkaban/server/conf    
    vi azkaban.properties
    
    #Azkaban Personalization Settings
    azkaban.name=Test    #服務器 UI 名稱,用於服務器上方顯示的名字
    azkaban.label=My Local Azkaban    #描述
    azkaban.color=#FF3601    #UI 顏色
    azkaban.default.servlet.path=/index
    web.resource.dir=/root/hd/azkaban/server/web/    #默認根 web 目錄
    default.timezone.id=Asia/Shanghai    #默認時區,已改為亞洲/上海 默認為美國

    #Azkaban UserManager class
    user.manager.class=azkaban.user.XmlUserManager    #用戶權限管理默認類
    user.manager.xml.file=/root/hd/azkaban/server/conf/azkaban-users.xml    #用戶配置

    #Loader for projects    # global 配置文件所在位置
    executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
    azkaban.project.dir=projects

    database.type=mysql    #數據庫類型
    mysql.port=3306    #端口號
    mysql.host=hd09-1    #數據庫連接 IP
    mysql.database=azkaban    #數據庫實例名
    mysql.user=root    #數據庫用戶名
    mysql.password=root    #數據庫密碼
    mysql.numconnections=100    #最大連接數    

    # Velocity dev mode
    velocity.dev.mode=false    # Jetty 服務器屬性

    # Azkaban Jetty server properties.
    jetty.maxThreads=25    #最大線程數
    jetty.ssl.port=8443    #Jetty SSL 端口
    jetty.port=8081    #Jetty 端口
    jetty.keystore=/root/hd/azkaban/server/keystore    #SSL 文件名
    jetty.password=123456    #SSL 文件密碼
    jetty.keypassword=123456    #Jetty 主密碼 與 keystore 文件相同
    jetty.truststore=/root/hd/azkaban/server/keystore    #SSL 文件名
    jetty.trustpassword=123456    # SSL 文件密碼

    # Azkaban Executor settings    # 執行服務器屬性
    executor.port=12321    #執行服務器端口

    # mail settings
    mail.sender=    #發送郵箱
    mail.host=    #發送郵箱 smtp 地址
    job.failure.email=    #任務失敗時發送郵件的地址
    job.success.email=    #任務成功時發送郵件的地址

    lockdown.create.projects=false

    cache.directory=cache    #緩存目錄

    4)修改配置文件    azkaban-users.xml
    vi azkaban-users.xml
    
    <azkaban-users>
            <user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
            <user username="metrics" password="metrics" roles="metrics"/>
            <user username="admin" password="admin" roles="admin,metrics"/>
            <role name="admin" permissions="ADMIN" />
            <role name="metrics" permissions="METRICS"/>
    </azkaban-users>
    
    5)修改配置文件    azkaban.properties
    cd /root/hd/azkaban/executor/conf
    vi azkaban.properties
    
    #Azkaban
    default.timezone.id=Asia/Shanghai    #時區

    # Azkaban JobTypes Plugins    #插件配置,插件所在位置
    azkaban.jobtype.plugin.dir=/root/hd/azkaban/executor/plugins/jobtypes

    #Loader for projects
    executor.global.properties=/root/hd/azkaban/executor/conf/global.properties
    azkaban.project.dir=projects
    #數據庫設置
    database.type=mysql    #數據庫類型(目前只支持 mysql)
    mysql.port=3306    #數據庫端口號
    mysql.host=hd09-1    #數據庫 IP 地址
    mysql.database=azkaban    #數據庫實例名
    mysql.user=root    #數據庫用戶名
    mysql.password=root    #數據庫密碼
    mysql.numconnections=100    #最大連接數

    # Azkaban Executor settings    # 執行服務器配置
    executor.maxThreads=50    #最大線程數
    executor.port=12321    #端口號(如修改,請與 web 服務中一致)
    executor.flow.threads=30    #線程數
    
    6)啟動web服務器
    cd /root/hd/azkaban/server
    bin/azkaban-web-start.sh
    
    7)啟動執行器
    cd /root/hd/azkaban/executor
    bin/azkaban-executor-start.sh
    
    8)訪問web
    https://hd09-1:8443
    打開谷歌或是火狐瀏覽器輸入https://IP:8443,此處測試的地址是https://hd09-1:8443,此時可能會打不開界面,點擊高級
    點擊繼續前往hd09-1(不安全)
    此時會跳到登錄界面,輸入在配置文件azkaban-users.xml,中配置的用戶名密碼admin/admin,點擊登錄即可
    
    9)配置環境變量
    vi /etc/profile 在最后面加上
    #Azkaban
    export AZKABAN_WEB_HOME=/root/hd/azkaban/server
    export AZKABAN_EXE_HOME=/root/hd/azkaban/executor
    export PATH=$PATH:$AZKABAN_WEB_HOME/bin:$AZKABAN_EXE_HOME/bin
    
    執行 source /etc/profile 聲明環境變量
    此時就可以直接輸入
    azkaban-web-start.sh
    azkaban-executor-start.sh
    啟動azkaban了。

四、應用
    下面的#后面的是文件名,把每個任務的文件打成zip壓縮包后傳到azkaban頁面中的project中即可執行任務。
    1、command類型單一任務案例
    # command.job
    type=command
    command=echo 'hello world'
    
    2、command類型多個任務案例
    # f.job
    type=command
    command=echo 'hello'
    
    # b.job
    type=command
    dependencies=f
    command=echo 'world'
    
    3、azkaban操作HDFS任務
    # hdfs.job
    type=command
    command=/root/hd/hadoop-2.8.4/bin/hdfs dfs -mkdir /azkaban
    
    4、azkaban啟動集群任務
    # start.job
    type=command
    command=/root/hd/hadoop-2.8.4/sbin/start-dfs.sh
    
    5、azkaban啟動MapReduce程序
    # wc.job
    type=command
    command=/root/hd/hadoop-2.8.4/bin/hadoop jar hadoop-mapreduce-examples-2.8.4.jar wordcount /azwc/in /azwc/out
    
    6、azkaban啟動Hive程序
    # hive.job
    type=command
    command=/root/hd/hive/bin/hive -f 'azhive.sql'

    # azhive.sql
    use default;
    drop table aztest;
    create table aztest(id int,name string) row format delimited fields terminated by ',';
    load data inpath '/azdata/user.txt' into table aztest;
    create table azres as select * from aztest;
    insert overwrite directory '/azdata/userout' select count(1) from aztest;

 


免責聲明!

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



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