Azkaban 簡介

1、Azkaban 介紹

1.1 背景

一個完整的大數據分析系統,必然由不少任務單元 (如數據收集、數據清洗、數據存儲、數據分析等) 組成,全部的任務單元及其之間的依賴關係組成了複雜的工做流。複雜的工做流管理涉及到不少問題:git

  • 如何定時調度某個任務?
  • 如何在某個任務執行完成後再去執行另外一個任務?
  • 如何在任務失敗時候發出預警?
  • ......

面對這些問題,工做流調度系統應運而生。Azkaban 就是其中之一。github

1.2 功能

Azkaban 產生於 LinkedIn,並通過多年生產環境的檢驗,它具有如下功能:web

  • 兼容任何版本的 Hadoop
  • 易於使用的 Web UI
  • 可使用簡單的 Web 頁面進行工做流上傳
  • 支持按項目進行獨立管理
  • 定時任務調度
  • 模塊化和可插入
  • 身份驗證和受權
  • 跟蹤用戶操做
  • 支持失敗和成功的電子郵件提醒
  • SLA 警報和自動查殺失敗任務
  • 重試失敗的任務

Azkaban 的設計理念是在保證功能實現的基礎上兼顧易用性,其頁面風格清晰明朗,下面是其 WEB UI 界面:數據庫

2、Azkaban 和 Oozie

Azkaban 和 Oozie 都是目前使用最爲普遍的工做流調度程序,其主要區別以下:服務器

功能對比

  • 二者都可以調度 Linux 命令、MapReduce、Spark、Pig、Java、Hive 等工做流任務;
  • 二者都可以定時執行工做流任務。

工做流定義

  • Azkaban 使用 Properties(Flow 1.0) 和 YAML(Flow 2.0) 文件定義工做流;
  • Oozie 使用 Hadoop 流程定義語言(hadoop process defination language,HPDL)來描述工做流,HPDL 是一種 XML 流程定義語言。

資源管理

  • Azkaban 有較嚴格的權限控制,如用戶對工做流進行讀/寫/執行等操做;
  • Oozie 暫無嚴格的權限控制。

運行模式

  • Azkaban 3.x 提供了兩種運行模式:
    • solo server model(單服務模式) :元數據默認存放在內置的 H2 數據庫(能夠修改成 MySQL),該模式中 webServer(管理服務器) 和 executorServer(執行服務器) 運行在同一個進程中,進程名是 AzkabanSingleServer。該模式適用於小規模工做流的調度。
    • multiple-executor(分佈式多服務模式) :存放元數據的數據庫爲 MySQL,MySQL 應採用主從模式進行備份和容錯。這種模式下 webServerexecutorServer 在不一樣進程中運行,彼此之間互不影響,適合用於生產環境。
  • Oozie 使用 Tomcat 等 Web 容器來展現 Web 頁面,默認使用 derby 存儲工做流的元數據,因爲 derby 過於輕量,實際使用中一般用 MySQL 代替。

3、總結

若是你的工做流不是特別複雜,推薦使用輕量級的 Azkaban,主要有如下緣由:框架

  • 安裝方面:Azkaban 3.0 以前都是提供安裝包的,直接解壓部署便可。Azkaban 3.0 以後的版本須要編譯,這個編譯是基於 gradle 的,自動化程度比較高;
  • 頁面設計:全部任務的依賴關係、執行結果、執行日誌均可以從界面上直觀查看到;
  • 配置方面:Azkaban Flow 1.0 基於 Properties 文件來定義工做流,這個時候的限制可能會多一點。可是在 Flow 2.0 就支持了 YARM。YARM 語法更加靈活簡單,著名的微服務框架 Spring Boot 就採用的 YAML 代替了繁重的 XML。

更多大數據系列文章能夠參見 GitHub 開源項目大數據入門指南分佈式

相關文章
相關標籤/搜索