a) Job類型java
全部的job都須要一個知道那個他們如何去執行的type。通常的,有這樣四種job類型:java、command、javaprocess和pig。web
Property數據庫 |
Require?併發 |
Meaningapp |
type框架 |
required佈局 |
Job類型:java、command、javaprocess或pigui |
每一個類型都有多種選項,以下描述。url
i. command jobs命令行
命令行jobs本質上是做爲單獨進程執行的Unix命令。任何輸出都要以標準輸出或標準錯誤寫入到日誌當中。若是一個job完成時退出代碼爲零則表明執行成功,若非零則失敗。
azkaban web動態傳參,command job能夠經過${變量名}獲取該參數。
ii. javaprocess jobs
Java process jobs 是一個方便啓動java程序的容器。它等價於從命令行執行一個class的main方法。下面介紹在javaprocess jobs中的可用屬性:
env.property能夠經過程序獲取環境變量得到。
iii. pig jobs
這個job類型會經過Grunt運行pig腳本。下面介紹pig jobs的可用屬性:
iv. java jobs
Java jobs是一個帶有run()方法的java類,例如。Java class沒必要要實現任何接口。Azkaban會充分利用在下面class中定義的方法:
在使用日誌的時候log4j須要爲job名稱設置一個logger name。
Azkaban提供了一個能夠爲適當的job日誌發出消息的log4j appender。
b) Job鎖
在Azkaban中有三種類型的鎖:permit、read.lock和write.lock。
i. Permits
Permit鎖是用於限制對一個資源的併發訪問。例如:若是你想保證訪問特定數據庫一次不超過4個job,你能夠創建一個有四個permit的池而且每一個job須要獲得一個permit纔可運行。Perimits的數量能夠在job目錄下的 .property 文件中的屬性當中設置。
Permit job的數量必須經過job.permits這個job參數設置提供纔可運行。全部的permits會在job結束或失敗時當即釋放。
ii. Read and Write 鎖
Azkaban支持位資源設置Read/Write locks。一個常見的用例就是鎖定一個在HDFS中的文件修改的權限。例如:當你有許多job在讀一個文件,這時有一個job想重建它,你就要確保在別的job讀它的時候你不重建這個文件。讀者不會妨礙其餘讀者而且容許任意數量的讀者。不管怎樣,都只能容許有一個做者,而且在開始寫的時候,全部的讀者必須執行完畢。
這些所必須經過read.lock和write.lock下面定義參數進行設置:
c) Job 目錄佈局
Job 文件是以 .job 結尾的文件。能夠再 .properties 文件中添加額外屬性。 一個屬性能夠引用其它屬性,例如:
一個常見的需求就是要支持在許多環節當中部署單獨一個job而且這些環境都須要一些不一樣的特殊配置。爲了支持這一點,Azkaban將job的全部配置分層設置。一個job能夠繼承定義在它所部署環境頂級目錄的任意屬性。爲了不在job添加一些與環境相關的屬性(如:主機名或端口號),這裏要設置一個定義在全局屬性文件中的例如${some.url}的變量。這個全局屬性文件能夠放置在job須要運行的環境中,不須要隨着job從新部署。
d) 其它標準Job屬性
許多屬性都是經過框架提供給各類類型的job。
下面是一些能夠被添加給任意job的屬性說明:
e) Azkaban系統屬性