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