本文上接《Azkaban 3.73.1 集群搭建(Multiple Executor)》,對Azkaban的使用做簡單說明
目錄
簡介
AzkabanWebServer中的三個主要元素:project、job、flow
- project:工程/項目
- job:任務,project中包含的需要執行的任務
- flow:工作流,由各個job之間的依賴關系所組成
1. 登錄
- 因為使用了SSl所以是 https
- host為啟動WebServer服務的機器ip
- port為azkaban-web/conf/azkaban.properties中配置的jetty.ssl.port=8443
- 賬號密碼為 azkaban-web/conf/azkaban-users.xml 中配置的

2. 創建工程
首頁四個重要的菜單
菜單 | 備注 |
---|---|
projects | 工程,最重要的部分,所有flows都在工程中運行 |
scheduling | 顯示定時任務 |
executing | 顯示當前運行的任務 |
history | 顯示歷史運行任務 |
在“projects”菜單下點擊“Create Project”完成創建工程,注意請使用英文,中文會報錯


3. 創建job
- web頁面中並沒有提供創建job的功能
- 需要自行創建以.job為擴展名的文件,並將創其通過web頁面上傳,才能形成job任務
- 所有的job都需要有一個知道他們如何去執行的type,附:Azkaban Jobtypes 文檔
.job文件中常用的參數,如下
參數 備注 dependencies 定義依賴關系,參數值為該job依賴的任務文件名(不包括.job后綴)
如果依賴多個,則以逗號分隔,如:job2,job5retries 任務失敗時自動重啟的次數 retry.backoff 每一次任務嘗試重啟時之間等待的毫秒數 working.dir 重新指定任務執行的工作目錄,默認為目前正在運行的任務的工作目錄 failure.emails 任務失敗時的郵件提醒設置,以逗號分隔多個郵箱 success.emails 任務成功時的郵件提醒設置,以逗號分隔多個郵箱 notify.emails 任務無論失敗還是成功都郵件提醒設置,以逗號分隔多個郵箱
3.1 創建 .job 文件
使用 command type 舉例:
job1
# 文件名:test_1.job
type=command
command=echo "This is a test job, name is test_1."
retries=5
job2
# 文件名:test_2.job
type=command
dependencies=test_1
retries=5
command=echo "This is a test job, name is test_2."
command.1=pwd
command.2=ls –l /tmp
job3
# 文件名:test_3.job
type=command
dependencies=test_1
retries=5
command=echo "This is a test job, name is test_3."
command.1=sh /opt/azkaban/job/test_script.sh
注意:/opt/azkaban/job/test_script.sh 為事先在服務器上寫好的腳本,且強烈建議使用這種形式,后期維護時,只需修改此文件內容就可以了
job4
# 文件名:test_4.job
type=command
dependencies=test_2,test_3
retries=5
command=echo "This is a test job, name is test_4."
command.1=netstat -ntlp
job5
# 文件名:test_5.job
type=command
dependencies=test_4
retries=5
command=echo "This is a test job, name is test_5."
command.1=whoami

3.2 打包
壓縮所有.job文件到同一個.zip文件中
- 必須是zip壓縮文件,當前僅支持zip
- 所有文件必須在壓縮包的根目錄中,沒有子目錄

3.3 創建Flow
- 上傳打包好的zip文件,進而生成一個Flow
- Flow的名稱為最后一個沒有依賴的.job文件的文件名
選擇工程,直接點擊“工程名”

工程頁面的三個菜單
菜單 | 備注 |
---|---|
Flows | 工作流程,有多個job組成 |
Permissions | 權限管理 |
Project Logs | 工程日志 |
工程頁面的三個按鈕
按鈕 | 備注 |
---|---|
Delete Project | 刪除該工程 |
Upload | 上傳zip文件,進而生成Flow |
Download | 下載工程 |
點擊“Upload”上傳zip


3.4 運行Flow
Flow的三個操作按鈕
按鈕 | 備注 |
---|---|
Execute Flow | 配置或執行Flow |
Executions | Flow的執行記錄 |
Summary | Flow的總結 |
點擊“Execute Flow”配置執行該流程

Execute Flow 的幾個菜單
菜單 | 備注 |
---|---|
Flow view | 流程視圖,“右鍵”可以禁用/啟用某些job |
Notification | 定義任務成功或者失敗是否發送郵件 |
Failure Options | 定義一個job失敗,剩下的job怎么執行 |
Concurrent | 並行任務執行設置 |
Flow Parametters | 參數設置 |
點擊左下方的“Schedule”可設置定時執行,下方綠色字體為執行時間的提示

點擊右下方“Execute”執行該Flow


“Continue”之后可以直接看到Flow的運行結果,“綠色”成功、“藍色”執行中、“紅色”失敗

可查看每一個job的運行日志,如果有報錯,也可以直接查看錯誤日志

首次運行是可能的報錯
ERROR [ExecutorServlet] [Azkaban] executor became inactive before setting up the flow 1
azkaban.executor.ExecutorManagerException: executor became inactive before setting up the flow 1

需要手動去激活一下 executor,方式如下:
curl http://${executorHost}:${executorPort}/executor?action=activate

附錄
參考
- 官方:https://azkaban.github.io/azkaban/docs/latest/#creating-flows
- https://juejin.im/post/5c8a289151882504715038cc
- https://www.jianshu.com/p/01188607a794
- http://www.jobplus.com.cn/article/getArticleDetail/51461