1. 創(chuàng)建Flow
使用Azkaban Flow 2.0 來創(chuàng)建任務流,F(xiàn)low 1.0 將被廢棄
- 創(chuàng)建一個名為
flow20.project的文本文件,添加如下內容用以說明這是一個Azkaban Flow 2.0的項目:
azkaban-flow-version: 2.0
- 創(chuàng)建一個名為
basic.flow的文本文件,其中定義了一個project中所有需要運行的job,使用name和type來定義一個job,大部分job都會需要config這個配置,詳細的內容在下文中說明,這里只是一個簡單的示例:
nodes:
- name: jobA
type: command
config:
command: echo "This is an echoed text."
- 選擇上面創(chuàng)建好的兩個文件,然后將其壓縮為一個名為
Archive.zip的zip文件,注意,是把兩個文件壓縮為一個文件,Linux中的操作如下:
[hadoop@beh07 tmp]$ mkdir zip-test
[hadoop@beh07 tmp]$ mv flow20.project basic.flow zip-test/
[hadoop@beh07 tmp]$ cd zip-test/
# 將目錄下的所有文件打成一個zip包
[hadoop@beh07 zip-test]$ zip -r Archive.zip .
# 錯誤操作
# 這是把zip-test這個目錄打成一個zip包
[hadoop@beh07 tmp]$ zip -r Archive.zip zip-test
2. 創(chuàng)建Project
登錄Azkaban

登錄到Azkaban后,將看到Project頁面。 此頁面將顯示當前用戶擁有讀取權限的所有項目的列表。如果用戶所在的組對某個項目具有READ或ADMIN權限,而用戶本身不具有這些權限,那么這個項目不會在這里列出。我這里是第一次登陸,還沒有創(chuàng)建過任何項目。

創(chuàng)建Project



單擊Permissions標簽可以對此項目進行權限管理

3. 上傳Project

上傳我們準備好的Archive.zip文件,Azkaban目前只支持上傳zip文件,上傳后Azkaban將驗證zip文件中的內容,檢查Flow的依賴關系,遇到任何無效的Flow例如循環(huán)依賴的Flow,都會宣告上傳失敗。
新上傳的Flow將會覆蓋此項目中之前已經(jīng)存在的Flow,成功上傳之后,會在屏幕上列出所有的Flow。



4. 查看Flow

你會看到圖形化顯示的Flows,右鍵單擊job,還可以查看job的詳細信息

單擊Executions標簽頁可以查看此項目以往的調度情況

5. Project權限管理
創(chuàng)建項目時,將自動為創(chuàng)建者賦予該項目的ADMIN權限。 創(chuàng)建者可以查看,上傳,修改作業(yè),調度作業(yè),刪除項目以及給項目添加用戶權限。 具有ADMIN權限的用戶可以刪除其他ADMIN用戶,但不能刪除自己。 這是為了防止項目成為“無人管”的項目,在權限頁面上,ADMIN可以將其他用戶,組或代理用戶添加到項目中。

添加用戶(此用戶必須存在)并為其設置對本項目的權限:

刪除用戶對本項目的權限只要取消對任意權限的勾選,并提交即可。
組權限設置組中的每個人都具有指定的權限。 可以通過勾選權限來設置組權限,通過取消選中組權限來刪除組權限。
如果在用戶配置中添加了代理用戶:
<!-- proxy配置只是說azkaban用戶可以代理系統(tǒng)用戶user1和user2,但是否代理需要在頁面配置 -->
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" proxy="user1,user2" />
那么添加代理用戶,就會允許Project以這些用戶身份運行。添加后,通過點擊Rmove按鈕將其刪除。
此頁面支持添加或刪除的5種權限如下:
| 權限名 | 說明 |
|---|---|
| ADMIN | 具有所有權限 |
| READ | 只能訪問每個project,并且查看project的日志 |
| WRITE | 可以上傳文件,修改任務屬性,刪除project |
| EXECUTE | 可以啟動任務 |
| SCHEDULE | 可以調度任務 |
6. 運行Flow

(1) 禁用job功能
你可以禁用某些job,禁用后該job將顯示為透明的,并在整個flow執(zhí)行過程中被忽略,選項Parents代表禁用job及其依賴的上一個job,Childern代表禁用job及依賴其的下一個job,Ancestors代表禁用job及其依賴的全部job,Descendents代表禁用job及依賴其的全部job, All代表禁用與此job有依賴關系的全部job。

(2) Notification
Notification標簽頁中可以配置Flow運行成功或失敗之后的通知行為

- First Failure:只有Flow中有任一job運行失敗就發(fā)送郵件通知
- Flow Finished:即使某個job運行失敗,也要運行完Flow中的全部job后再進行通知
Azkaban配置通知郵件的地方有3處
-
azkaban.properties
# 通知郵件的發(fā)送者 mail.sender=xxx@163.com # 發(fā)送通知郵件的服務器 mail.host=smtp.163.com # 郵件發(fā)送者的賬號和密碼 mail.user=xxx@163.com mail.password= # 這里配置任務執(zhí)行成功或失敗后將通知郵件發(fā)送給誰 job.failure.email=422926963@qq.com job.success.email=
-
在flow的定義文件
xxx.flow中配置config: user.to.proxy: foo failure.emails: noreply@foo.com
- 在
Notification標簽頁面配置,可以填寫多個郵箱地址,用逗號,空格或分號分隔。
(3) Failure Options

當job運行失敗后,你可以進行如下操作:
-
Finish Current Running:嘗試繼續(xù)執(zhí)行其他的正在運行的job,未運行的job將不會嘗試開始運行,期間將Flow的狀態(tài)設置為
FAILED FINISHING,F(xiàn)low運行失敗后將狀態(tài)改為FAILED。 - Cancel All:停止所有Flow中的其他job,宣告此Flow運行失敗
-
Finish All Possible:嘗試繼續(xù)執(zhí)行其他的job(包括已經(jīng)在運行的和還未運行的),期間將Flow的狀態(tài)設置為
FAILED FINISHING,F(xiàn)low運行失敗后將狀態(tài)改為FAILED。
(4) Concurrent Options
如果希望運行多個相同的Flow,可以選擇以下配置

Skip Execution:如果Flow已經(jīng)在運行,不會再調用它
Run Concurrently:無論Flow是否在運行都會運行,但是選擇不同的工作目錄
-
Pipeline:并發(fā)運行多個Flow
- Level 1: 前一個Flow的JobA結束后開始運行當前Flow的JobA
- Level 2: 前一個Flow的JobA及其下游的Job全部完成后,開始運行當前Flow
(5) Flow Parameters
在此處配置參數(shù),覆蓋Flow的全局屬性

然后點擊Execute就可以手動運行該Flow。
7. Flow運行頁面

這個頁面很像剛上傳zip文件之后查看Flow那個頁面,但此頁面中的內容包含了更多信息。
在Job List標簽頁可以看到Flow中全部Job執(zhí)行情況的詳細信息和日志。只要全部Job執(zhí)行未完成,此頁面將自動更新信息。你可以對正在執(zhí)行的流程進行一些操作包括:
- Cancel:殺死所有正在運行的作業(yè),并立即宣告Flow失敗。 Flow狀態(tài)為
KILLED; - Pause:阻止新作業(yè)運行。 當前正在運行的作業(yè)照常進行;
- Resume:恢復暫停的執(zhí)行;
- Retry Failed:在Flow仍處于
FAILED FINISHING狀態(tài)時,重試所有狀態(tài)為FAILED的Job,重試期間顯示Attempts提示; - Prepare Execution:使Job進入準備運行的配置頁面,僅在已完成的Job(無論運行成功或失敗)上可用, 自動忽略成功完成的Job。

點擊Details按鈕可以查看Job的詳細信息,包括運行過程中產生的日志以及Job Summary


Job Summary中包含以下信息:
- Job Type
- Command Summary :啟動Job過程的命令以及諸如類路徑和內存設置之類的信息
- Pig/Hive Job Summary: 特定于Pig和Hive Job的自定義統(tǒng)計信息
- Map Reduce Jobs:已啟動的MapReduce作業(yè)的ID列表,可以鏈接到y(tǒng)arn的Track URL
在頂級Executing標簽頁面,你會看到多個Project中的所有正在運行的Job以及所有已經(jīng)完成的Job的描述信息。

History標簽頁面包括所有的正在運行的、已經(jīng)完成的Job的描述信息。

8. Job信息頁面
打開Job信息頁面

此頁面顯示Job的依賴關系和從屬關系以及該Job使用的全局屬性。

點擊Edit按鈕,可以修改Job的屬性,但是一些關鍵信息例如type和dependencies是無法修改的,而且必須在Job未運行前修改才可以生效,新上傳的zip文件將會覆蓋這些修改。

點擊History按鈕可以查看所有Job的信息


點擊Logs可以查看該Job運行期間產生的日志。
9. 調度

調度后將顯示調度信息,你可以刪除此次調度

點擊Set SLA可以配置SLA相關信息

以上圖片示例中配置的意思是,如果Flow basic的SUCCESS狀態(tài)持續(xù)超過20min,就把警告信息郵件給xxx@163.com,如果JobA的FINISH狀態(tài)持續(xù)10min以上,當勾選Email Action時,就會發(fā)郵件警告,當勾選Kill Action時,就會直接Kill JobA。
全文完畢。