azkaban
azkaban是一款非常給力的調度系統(tǒng),由Linkedin開源,有以下主要功能:
- Web用戶界面
- 調度工作流
- 認證/授權(權限的工作)
- 工作流和任務的日志記錄和審計
azkaban_assistant
github地址
在nice內部使用過程中,對azkaban進行了擴展,實現了以下功能:
- 任務管理WEB化(再也不用管理一堆文件了)
- 遠程服務調用(所有任務都是執(zhí)行遠程服務腳本)
- 報警擴展(每個任務都可以配置郵件及短信報警了)
- 跨流程的依賴選項(跨項目甚至是跨時間維度的任務依賴)
- 圖形化依賴配置(拖來拖去就把依賴關系配好了)
- LDAP權限認證(不用再給每一個人添加帳號了)
job管理鏈接
?管理頁面
?編輯頁面
編輯頁面
外部依賴配置
?DAG拖拽?更新
安裝部署
基于azkaban-2.5.0開發(fā),對源文件有所改動
環(huán)境準備
- 安裝python,以及依賴模塊tornado、paramiko
- 創(chuàng)建azkaban數據庫,導入resources/azkaban_create_table.sql (比原生多了兩張表)
配置更新
- 更新azkaban-executor/azkaban-web的配置文件(默認你們已經懂azkaban了,不清楚百度/谷歌)
- 更新schedule/conf/nice.cfg
- 工程azkaban-web中使用LDAP管理用戶,提供了admin/admin_pwd這個默認超級管理員帳號。如果不支持LDAP,可改為默認方式,維護azkaban-users.xml中的用戶即可
服務啟動
- 分別啟動azkaban-executor/azkaban-web
- 啟動job管理服務:schedule/webapp下執(zhí)行startup.sh/restart.sh,查看schedule_web.log日志是否有報錯
- 登陸https://hostname:8443,先創(chuàng)建項目,再點擊“任務配置”進行配置
需要注意的地方
- 因為所有任務都是遠程服務調用,所以需要提前打通azkaban啟動用戶到各服務器的ssh權限!!!
- 郵件、短信接口已預留好,在schdule/util/alarm.py自定義,默認只在日志中打印出信息
- 遠程腳本是否正常結束,是通過shell執(zhí)行script execute status ["$?"](最后一個命令的狀態(tài)返回值)來判斷的,所以下面的腳本:
sh test.sh
echooo 'hello world'
echo 'hello world'
雖然第一行出錯,但最后一行繼續(xù)執(zhí)行并返回正確(相當于第一行的異常被捕獲了),所以腳本仍認為是成功。使用的時候需要注意下
- 在azkaban頁面上kill任務時,僅會kill本地監(jiān)聽的腳本,遠程腳本會繼續(xù)執(zhí)行下去(該特性暫時不做調整)
關于nice
專注于圖片與標簽的社交APP~
內部wiki親情大放送
http://note.youdao.com/noteshare?id=395820b77024d74f4e4914cb13ef5e5f