Azkaban整理

1、Azkaban簡介

       Azkaban是由Linkedin開源的一個批量工做流任務調度器。用於在一個工做流內以一個特定的順序運行一組工做和流程。Azkaban定義了一種KV文件格式來創建任務之間的依賴關係,並提供一個易於使用的web用戶界面維護和跟蹤你的工做流。簡而言之就是一個工做流調度系統。java

 

爲何須要工做流調度系統?

 

 

由於一個完整的數據分析系統一般都是由大量任務單元組成:shell腳本程序,Java程序,mapreduce程序、Hive腳本等node

 而各任務單元之間存在時間前後及先後依賴關係linux

 爲了很好地組織起這樣的複雜執行計劃,須要一個工做流調度系統來調度執行;web

 

常見工做流調度系統

 

Hadoop領域,常見工做流調度系統有:Oozie, Azkaban,Cascading,Hamakeshell

 

下面的表格對上述四種hadoop工做流調度器的關鍵特性進行了比較,儘管這些工做流調度器可以解決的需求場景基本一致,但在設計理念,目標用戶,應用場景等方面仍是存在顯著的區別,在作技術選型的時候,能夠提供參考ide

特性模塊化

Hamakeoop

Ooziespa

Azkaban.net

Cascading

工做流描述語言

XML

XML (xPDL based)

text file with key/value pairs

Java API

依賴機制

data-driven

explicit

explicit

explicit

是否要web容器

No

Yes

Yes

No

進度跟蹤

console/log messages

web page

web page

java API

Hadoop job調度支持

no

yes

yes

yes

運行模式

command line utility

daemon

daemon

API

Pig支持

yes

yes

yes

yes

事件通知

no

no

no

yes

須要安裝

no

yes

yes

no

支持的hadoop版本

0.18+

0.20+

currently unknown

0.18+

重試支持

no

workflownode evel

yes

yes

運行任意命令

yes

yes

yes

yes

Amazon EMR支持

yes

no

currently unknown

yes

其中比較經常使用的爲Azkaban和Oozie。

Azkaban功能特色

 

1 Web用戶界面

2 方便上傳工做流

3 方便設置任務之間的關係

4 調度工做流

5 認證/受權(權限的工做)

6  可以殺死並從新啓動工做流

7  模塊化和可插拔的插件機制

8  項目工做區

9 工做流和任務的日誌記錄和審計

 

2、Azkaban使用

 

      Azkaban有web界面,輸入https://localhost:8443 (注意是https)能夠訪問Azkaban的用戶界面。如圖:

首頁有四個菜單

  • projects:最重要的部分,建立一個工程,全部flows將在工程中運行。
  • scheduling:顯示定時任務
  • executing:顯示當前運行的任務
  • history:顯示歷史運行任務

2.1 建立工程

 

         一個工程包含一個或多個flows,一個flow包含多個job。job是你想在azkaban中運行的一個進程,能夠是簡單的linux命令,但是java程序,也能夠是複雜的shell腳本,固然,若是你安裝相關插件,也能夠運行插件。一個job能夠依賴於另外一個job,這種多個job和它們的依賴組成的圖表叫作flow。點擊右上角的create project,在彈出的窗口中填寫工程名和描述便可建立工程。

 

2.2 建立job

    建立job很簡單,只要建立一個以.job結尾的文本文件就好了。好比:

 

[java]  view plain  copy
 
  1. # foo.job  
  2. type=command  
  3. command=echo foo  

若是是多個job而且有依賴關係,能夠使用dependencies參數指定依賴關係。如:

 

 

[java]  view plain  copy
 
  1. # bar.job  
  2. type=command  
  3. dependencies=foo  
  4. command=echo bar  

這樣job就建立好了。

 

2.3 將工做流打包上傳

      將上面兩個job打成zip包,在頁面上點擊update上傳。上傳以後如圖:

2.4 運行

       以後點擊綠色的Execute Flow,彈出窗口:

左邊的選項卡依次爲:

 

Flow view:流程視圖。能夠禁用,啓用某些job
Notification:定義任務成功或者失敗是否發送郵件
Failure Options:定義一個job失敗,剩下的job怎麼執行
Concurrent:並行任務執行設置
Flow Parametters:參數設置。

 

左下角的Schedule是設置調度時間,右下角的Execute爲直接運行,點擊Execute。運行以後在Graph能夠看到:

在job List中能夠看到個job運行的起始終止時間。

這樣工做流的調度就執行完了,Azkaban的使用仍是挺簡單的吧。

相關文章
相關標籤/搜索