数据调度组件:基于Azkaban协调时序任务执行
一、Azkaban概述
1、任務時序
在數據服務的業務場景中,很常見的業務流程就是日志文件經過大數據分析,再向業務輸出結果數據;在該過程中會有很多任務需要執行,并且很難精準把握任務執行的結束時間,但是又希望整個任務鏈盡快結束釋放資源。
大致執行順序如下:
- 業務日志文件同步到HDFS文件系統;
- 經過Hadoop執行分析計算過程;
- 結果數據在導入數倉進行存儲;
- 最終需要把數倉內數據同步到業務庫;
這樣的流程不必業務中任務調度,時間基本是可預估的,只要把握留足任務間隔時間即可,大數據的任務鏈路通常需要一個結束直接啟動另一個,以此降低時間成本,初入數據服務公司時,就發生過因為同步任務執行結束但是最后的個別CSV數據文件未生成結束的案例,導致近百萬的分析數據同步更新業務庫失敗。
2、Azkaban簡介
Azkaban是由Linkedin公司推出的可以管理批量工作流任務的調度器,用于在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban使用job配置文件建立任務之間的依賴關系,并提供一個易于使用的web用戶界面維護和跟蹤你的工作流。
Azkaban特點和優勢
- 提供功能清晰,簡單易用的 Web UI 界面;
- 作業配置簡單,任務作業依賴關系清晰;
- 提供可擴展的組件;
- 基于Java語言開發,易于二次開發;
相比較于Oozie配置工作流的過程是編寫大量的XML配置,并且其代碼復雜度比較高,不易于二次開發,Azkaban則顯得輕量級,功能和用法相對簡單和容易使用。
二、服務安裝
1、核心包
Web服務
azkaban-web-server-2.5.0.tar.gz執行服務
azkaban-executor-server-2.5.0.tar.gzSQL腳本
azkaban-sql-script-2.5.0.tar.gz2、安裝路徑
上傳上面三個安裝包,并解壓操作。
[root@hop01 azkaban]# pwd /opt/azkaban [root@hop01 azkaban]# tar -zxvf azkaban-web-server-2.5.0.tar.gz [root@hop01 azkaban]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz [root@hop01 azkaban]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz [root@hop01 azkaban]# mv azkaban-web-2.5.0/ server [root@hop01 azkaban]# mv azkaban-executor-2.5.0/ executor3、MySQL導入腳本
[root@hop01 ~]# mysql -uroot -p123456 mysql> create database azkaban_test; mysql> use azkaban_test; mysql> source /opt/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql查看表
4、SSL配置
[root@hop01 opt]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA生成文件:keystore
拷貝到AzkabanWeb服務器目錄下:
[root@hop01 opt]# mv keystore /opt/azkaban/server/5、Web服務配置
基礎配置
[root@hop01 conf]# pwd /opt/azkaban/server/conf [root@hop01 conf]# vim azkaban.properties核心修改內容:MySQL和Jetty。
default.timezone.id=Asia/Shanghai# Azkaban MySQL server properties. database.type=mysql mysql.port=3306 mysql.host=localhost mysql.database=azkaban_test mysql.user=root mysql.password=123456 mysql.numconnections=100# Azkaban Jetty server properties. jetty.maxThreads=25 jetty.ssl.port=8443 jetty.port=8081 jetty.keystore=keystore jetty.password=123456 jetty.keypassword=123456 jetty.truststore=keystore jetty.trustpassword=123456這里配置符合本地配置參數即可。
用戶配置
[root@hop01 conf]# vim azkaban-users.xml增加一個管理員用戶:
<azkaban-users><user username="admin" password="admin" roles="admin,metrics" /> </azkaban-users>6、Executor服務配置
[root@hop01 conf]# pwd /opt/azkaban/executor/conf [root@hop01 conf]# vim azkaban.properties核心修改內容:MySQL和時區。
default.timezone.id=Asia/Shanghai# Azkaban MySQL server properties. database.type=mysql mysql.port=3306 mysql.host=localhost mysql.database=azkaban_test mysql.user=root mysql.password=123456 mysql.numconnections=1007、啟動服務器
Web服務
[root@hop01 bin]# pwd /opt/azkaban/server/bin [root@hop01 bin]# ll total 16 -rwxr-xr-x 1 root root 161 Apr 21 2014 azkaban-web-shutdown.sh -rwxr-xr-x 1 root root 1275 Apr 21 2014 azkaban-web-start.sh這里分別是啟動和關閉的腳本。
[root@hop01 bin]# /opt/azkaban/server/bin/azkaban-web-start.shExecutor服務
[root@hop01 bin]# /opt/azkaban/executor/bin/azkaban-executor-start.sh啟動日志
兩個服務的關鍵尾行日志:
Azkaban Server running on ssl port 8443. Azkaban Executor Server started on port 12321登錄界面
注意這里是基于https協議:
https://hop01:8443/三、操作案例
1、入門案例
創建command類型job
[root@hop01 flow_01]# pwd /opt/azkaban/testJob/flow_01 [root@hop01 flow_01]# vim simple.jobtype=command command=echo 'mySimpleJob'打成zip包
[root@hop01 flow_01]# zip -q -r simpleJob.zip simple.job創建項目
上傳任務包
執行任務
2、任務順序執行
創建任務A
[root@hop01 flow_02]# vim simpleA.jobtype=command command=echo 'simplejobA'創建任務B
[root@hop01 flow_02]# vim simpleB.jobtype=command dependencies=simpleA command=echo 'simplejobB'打包任務
[root@hop01 flow_02]# zip -q -r simpleTwoJob.zip simpleA.job simpleB.job同樣的操作方式,兩個任務放在zip包中,通過Web服務上傳,觀察執行效果即可。
四、源代碼地址
GitHub·地址 https://github.com/cicadasmile/big-data-parent GitEE·地址 https://gitee.com/cicadasmile/big-data-parent閱讀標簽
【Java基礎】【設計模式】【結構與算法】【Linux系統】【數據庫】
【分布式架構】【微服務】【大數據組件】【SpringBoot進階】【Spring&Boot基礎】
【數據分析】【技術導圖】【 職場】
總結
以上是生活随笔為你收集整理的数据调度组件:基于Azkaban协调时序任务执行的全部內容,希望文章能夠幫你解決所遇到的問題。