上節主要介紹了安裝搭建和簡單的運行一個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/
筆者遇到了難題,如今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
在執行任務前配置成功失敗的收件人
當任務執行完成就會收到以下郵件