Azkaban 任務調度系統(使用和小技巧)

上節主要介紹了安裝搭建和簡單的運行一個job,可是真正使用到實際場景仍是須要了解更多的知識,好比任務怎麼互相依賴,能夠選擇指定的節點來執行嗎等等一些相關的操做會在本節中進行介紹java

附上:git

喵了個咪的博客:w-blog.cngithub

Azkaban官網: https://azkaban.github.ioweb

官方文檔地址: http://azkaban.github.io/azkaban/docs/latestdocker

一 ,任務依賴

以前說的都是部署方式和一個簡單的運行例子,那麼像開頭說的若是任務直接有依賴關係咋辦呢? 那就須要用到 dependencies 關鍵字了數據庫

> mkdir azkaban_job
> vim azkaban_job/one.job
type=command
command=echo "this is job one"

> vim azkaban_job/tow.job
type=command
dependencies=one
command=echo "this is job two"

zip -r azkaban_job.zip azkaban_job/

二 ,指定exec運行對應的任務

筆者遇到了難題,如今Azkaban管着3個exec,其中2個是hadoop的一個是docker相關的,可是Azkaban選擇執行任務的節點是更具節點的資源來調度的,那麼就會出現跑docker相關的命令會跑到hadoop的服務器上,hadoop的命令會跑到docker服務器上,那麼有沒有辦法指定任務執行的環境呢?vim

首先找到對應的ID服務器

在運行任務的時候添加一個變量 異步

PS:侷限雖然能夠指定在一臺節點上執行,可是失去了高可用的優點,若是有不一樣類型的任務建議用多套azkabansocket

三 , 參數傳遞

當我在編寫程序的時候經常會用到變量來去傳遞使用,使用變量的好處在於程序會應該不一樣的變量完成不一樣的事情,那麼對於任務來講也是一樣一個道理,好比我傳遞的數據庫的連接地址的不一樣就決定了從哪一個數據庫獲取源數據,爲了程序的泛用性變量是不可缺乏的,azkaban在job文件中也能夠指定變量來接受每一次執行時不一樣的參數

azkaban變量替換格式是<${name}>,上傳下面測試job文件

#command.job
type=command
command=echo 'hello ${name}!'

在運行前配置好要替換 &{name} 參數的具體的值

最終在執行下來就能夠看到參數已經被替換了

四 , 郵件配置

應爲任務是異步定時的,咱們對於結果的感知每每沒有手動跑腳本那麼及時,可是若是任何一個任務運行失敗可能都會引發一些列問題,在這個狀況下消息通知就很重要了,azkaban支持郵件通知任務執行狀況

首先要確保在編譯的時候有按照本文搭建所示修改過azkaban-common/src/main/java/azkaban/utils/EmailMessage.java文件增長了下面這行代碼

props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");

郵件配置只須要配置到azkaban.properties就能夠了

> vim /usr/local/azkaban-web-server/conf/azkaban.properties

mail.sender= @qq.com
mail.user= 
mail.host=smtp.qq.com
mail.password= 
mail.tls=true
mail.port=465

在執行任務前配置成功失敗的收件人

當任務執行完成就會收到以下郵件

相關文章
相關標籤/搜索