1. 程式人生 > >工作流排程器azkaban(01)——azkaban概述

工作流排程器azkaban(01)——azkaban概述

azkaban是什麼?

Azkaban是由Linkedin開源的一個批量工作流任務排程器。用於在一個工作流內以一個特定的順序執行一組工作和流程。 Azkaban定義了一種KV檔案(properties)格式來建立任務之間的依賴關係,並提供一個易於使用的web使用者介面維護和跟蹤你的工作流。

azkaban的特點

它有如下功能特點:

Web使用者介面 方便上傳工作流 方便設定任務之間的關係 排程工作流 認證/授權(許可權的工作) 能夠殺死並重新啟動工作流 模組化和可插拔的外掛機制 具有專案工作區 工作流和任務的日誌記錄和審計

為什麼需要工作流排程系統?

一個完整的資料分析系統通常都是由大量任務單元組成: shell指令碼程式,java程式,mapreduce程式、hive指令碼等 各任務單元之間存在時間先後及前後依賴關係 為了很好地組織起這樣的複雜執行計劃,需要一個工作流排程系統來排程執行;

工作流排程實現方式

簡單的任務排程:可直接使用linux的crontab來定義; 複雜的任務排程:開發排程平臺或使用現成的開源排程系統,比如ooize、azkaban、airflow等進行任務排程。

常見工作流排程系統Azkaban與Oozie對比

在hadoop領域,常見的工作流排程器有Oozie, Azkaban,Cascading,Hamake等

總體來說,ooize相比azkaban是一個重量級的任務排程系統,功能全面,但配置使用也更復雜。如果可以不在意某些功能的缺失,輕量級排程器azkaban是很不錯的候選物件。

功能

兩者均可以排程mapreduce,pig,java,指令碼工作流任務 兩者均可以定時執行工作流任務

工作流定義

Azkaban使用Properties檔案定義工作流 Oozie使用XML檔案定義工作流

工作流傳參

Azkaban支援直接傳參,例如inputOozieEL{input} Oozie支援引數和EL表示式,例如{fs:dirSize(myInputDir)}

定時執行

Azkaban的定時執行任務是基於時間的 Oozie的定時執行任務基於時間和輸入資料

資源管理

Azkaban有較嚴格的許可權控制,如使用者對工作流進行讀/寫/執行等操作 Oozie暫無嚴格的許可權控制

工作流執行

Azkaban有兩種執行模式,分別是solo server mode(executor server和web server部署在同一臺節點)和multi server mode(executor server和web server可以部署在不同節點) Oozie作為工作流伺服器執行,支援多使用者和多工作流

工作流管理

Azkaban支援瀏覽器以及ajax方式操作工作流 Oozie支援命令列、HTTP REST、Java API、瀏覽器操作工作流