初识Azkaban
數(shù)據(jù)的初始來(lái)源: RDBMS、log文件
離線處理:
–> ETL
–> 入數(shù)據(jù)湖(Delta Lake、Hudi 、Iceberg)
– > 各種統(tǒng)計(jì)維度的分析
– > RDBMS 、 NoSQL
工作流調(diào)度,組織各任務(wù)單元之間存在的時(shí)間、依賴關(guān)系。
常用的調(diào)度器:Azkaban 和 Airflow 最常用
-
簡(jiǎn)單的任務(wù)調(diào)度:
直接使用linux的 crontab。只能單機(jī),無(wú)管理界面(只能通過(guò)日志自己查),適合小規(guī)模的調(diào)度 -
復(fù)雜的任務(wù)調(diào)度:
開(kāi)發(fā)調(diào)度平臺(tái)或使用現(xiàn)成的開(kāi)源調(diào)度系統(tǒng),比如 Ooize、Azkaban、Airflow等 -
Azkaban: 由LinkedIn公司開(kāi)源,有管理界面,配置也OK,但也有缺點(diǎn),會(huì)將
兼容任何Hadoop版本 易于使用的web UI 簡(jiǎn)單的web和http工作流上傳 通過(guò)項(xiàng)目工作區(qū)來(lái)管理多個(gè)工作流 調(diào)度的工作流 模塊化和pluginable 身份驗(yàn)證和授權(quán) 跟蹤用戶操作 電子郵件提醒失敗和成功 SLA報(bào)警和自動(dòng)殺死 重試失敗的作業(yè)
還不是 apache頂級(jí)項(xiàng)目,開(kāi)源托管在github azkaban.github.io -
Oozie : CM(container manage) , 太重量級(jí),如果不是搭配CM、HUE的項(xiàng)目,單獨(dú)搭建很麻煩,底層配置是xml
-
Airflow :
應(yīng)用平臺(tái)用以上的就夠;基礎(chǔ)平臺(tái)往往都是自研,以上都不能無(wú)縫滿足所有需求。
Azkaban 架構(gòu):
分布式的工作流,可以布置在多個(gè)Executor上
web server – 與管理頁(yè)面相關(guān)
executor server – 與執(zhí)行相關(guān)
mysql – 元數(shù)據(jù)的存儲(chǔ)(web 和 executor的元數(shù)據(jù))[默認(rèn)自帶H2數(shù)據(jù)庫(kù)]
Azkaban standalone: web 和 executor 在同一個(gè)進(jìn)程上
多executor集群,web 和 executor 部署在多個(gè)機(jī)器。web 掛到并不影響正在運(yùn)行的executor。
源碼編譯
2.x有安裝包,3.x 只能通過(guò)源碼編譯安裝 (不是maven編譯)https://azkaban.readthedocs.io/en/latest/getStarted.html#getstartedhead
// 在 Azkaban源碼路徑下執(zhí)行: ./gradlew build installDist -x test如果太慢,是因?yàn)榫幾g是要根據(jù) gradle-wrapper.propertities 文件中
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip去下載這個(gè)文件。那我們可以編譯前根據(jù)這個(gè)連接,自己下載好gradle-4.6-all.zip,放在這個(gè)目錄下: gradle/wrapper。
同時(shí)修改 gradle-wrapper.propertities 配置文件中
distributionUrl=gradle-4.6-all.zip其他配置 ./conf
./conf 下有4個(gè)配置文件
azkaban.properties -- 與頁(yè)面相關(guān)的配置,也指示了用戶的配置是在azkaban-user.xml 文件 azkaban-user.xml --用戶、用戶組、密碼的明細(xì)配置 global.properties --全局配置,默認(rèn)還是空的 log4j.propertiessolo-server 模式
Getting started with the Solo Server
有bug(環(huán)境變量沒(méi)完全好),只能在 bin上層目錄用命令
bin/start-solo.shstart-solo.sh 能將web 和 excutor 同時(shí)啟動(dòng)在一個(gè)進(jìn)程。
Flows
https://azkaban.readthedocs.io/en/latest/createFlows.html#creating-flows
版本問(wèn)題:
Azkaban : 2.x 和 3.x
分別也叫 Azkaban Flow 1.0 和 2.0
Creating Flows
:在當(dāng)前Project右下點(diǎn)擊Execute
:在當(dāng)前Project右下進(jìn)入Schedule,配置cron表達(dá)式后開(kāi)啟Schedule。
如果某job運(yùn)行中途失敗,支持從中間任意job重新運(yùn)行。
command就是要在linux運(yùn)行的具體命令;注意cmmand中對(duì)文件目錄使用,要用絕對(duì)路徑。
基于Azkaban二次開(kāi)發(fā)一些場(chǎng)景&思路
對(duì)Azkaban使用最大的問(wèn)題就是需要手寫(xiě) flow文件,如果有工具自動(dòng)化生成、校驗(yàn)就更方便。
基于郵件的告警也不夠,還可以自己開(kāi)發(fā)短信、電話告警。
也不可以不用Azkaban自帶Web UI, 它提供了ajax請(qǐng)求接口,可以自己開(kāi)發(fā)web。
多節(jié)點(diǎn)模式
Getting started with the Multi Executor Server.
以下是簡(jiǎn)要整理,更多詳細(xì)步驟參考官網(wǎng)。
max_allowed_packet 需要設(shè)置更大些,flow文件最終都是存儲(chǔ)在mysql的。[mysqld] ... max_allowed_packet=1024M
總結(jié)
- 上一篇: PHP语言Web开发ThinkPhp6框
- 下一篇: 单亲家庭父子的理财通信