天天看點

快速學習-Azkaban概述

一 概述

1.1 什麼是 Azkaban

Azkaban 是由 Linkedin 公司推出的一個批量工作流任務排程器,主要用于在一個工作流内以一個特定的順序運作一組工作和流程,它的配置是通過簡單的 key:value 對的方式,通過配置中的 Dependencies 來設定依賴關系。Azkaban 使用 job 配置檔案建立任務之間的依賴關系,并提供一個易于使用的 web 使用者界面維護和跟蹤你的工作流。

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

  1. 一個完整的資料分析系統通常都是由大量任務單元組成:Shell 腳本程式,Java 程式,MapReduce 程式、Hive 腳本等
  2. 各任務單元之間存在時間先後及前後依賴關系
  3. 為了很好地組織起這樣的複雜執行計劃,需要一個工作流排程系統來排程執行;例如,我們可能有這樣一個需求,某個業務系統每天産生 20G 原始資料,我們每天都要對其進行處理,處理步驟如下所示:
    1. 通過 Hadoop 先将原始資料上傳到 HDFS 上(HDFS 的操作);
    2. 使用 MapReduce 對原始資料進行清洗(MapReduce 的操作);
    3. 将清洗後的資料導入到 hive 表中(hive 的導入操作);
    4. 對 Hive 中多個表的資料進行 JOIN 處理,得到一張 hive 的明細表(建立中間表);
    5. 通過對明細表的統計和分析,得到結果報表資訊(hive 的查詢操作);

1.3 Azkaban 特點

  1. 相容任何版本的 hadoop
  2. 易于使用的 Web 使用者界面
  3. 簡單的工作流的上傳
  4. 友善設定任務之間的關系
  5. 排程工作流
  6. 子產品化和可插拔的插件機制
  7. 認證/授權(權限的工作)
  8. 能夠殺死并重新啟動工作流
  9. 有關失敗和成功的電子郵件提醒

1.4 常見工作流排程系統

  1. 簡單的任務排程:直接使用 crontab 實作;
  2. 複雜的任務排程:開發排程平台或使用現成的開源排程系統,比如 ooize、azkaban 等

1.5 Azkaban 的架構

  1. AzkabanWebServer

    AzkabanWebServer

    是整個 Azkaban 工作流系統的主要管理者,它使用者登入認證、負責 project 管理、定時執行工作流、跟蹤工作流執行進度等一系列任務。
  2. AzkabanExecutorServer

    :負責具體的工作流的送出、執行,它們通過 mysql 資料庫來協調任務的執行。
  3. 關系型資料庫(MySQL):存儲大部分執行流狀态,

    AzkabanWebServer

    AzkabanExecutorServer

    都需要通路資料庫。

1.6 Azkaban 下載下傳位址