Azkaban 簡介(一)


什么是任務調度

大數據平台技術框架支持的開發語言多種多樣,開發人員的背景差異也很大,這就產生出很多不同類型的程序(任務)運行在大數據平台之上,如:MapReduce、Hive、Pig、Spark、Java、Shell、Python 等。

這些任務需要不同的運行環境,並且除了定時運行,各種類型之間的任務存在依賴關系,一張簡單的任務依賴圖如下:

image-20210519224232022

常見任務調度工具

  • crontab (Linux 自帶命令,使用方式簡單,適合不是非常復雜的場景,比如只按照時間來調度)
  • oozie( Hadoop 自帶的開源調度系統,使用方式比較復雜,適合大型項目場景)
  • azkaban(一個開源調度系統,使用方式比較簡單,適合中小型項目場景)
  • 企業定制開發(企業自研的調度系統,不開源)

Azkaban 是什么

Azkaban 是由 Linkedin 公司推出的一個批量工作流任務調度器,Azkaban 使用 job 文件建立任務之間的依賴關系,並提供 Web 界面供用戶管理和調度工作流

Azkaban 特點

Azkaban 是由 Linkedin 開源的一個批量工作流任務調度器。用於在一個工作流內以一個特定的順序運行一組工作和流程。Azkaban 定義了一種 KV 文件格式來建立任務之間的依賴關系,並提供一個易於使用的 web 用戶界面維護和跟蹤你的工作流。
它有如下功能特點:

  • Web 用戶界面
  • 方便上傳工作流
  • 方便設置任務之間的關系
  • 調度工作流
  • 認證/授權(權限的工作)
  • 能夠殺死並重新啟動工作流
  • 模塊化和可插拔的插件機制
  • 項目工作區
  • 工作流和任務的日志記錄和審計

Azkaban 與 Oozie 對比

Azkaban 和 Oozie 是市面上最流行的兩種調度器。總體來說,Ooize 相比 Azkaban 是一個重量級的任務調度系統,功能全面,但部署和使用也更復雜,比較適合作為大型項目的任務調度系統。而 Azkaban 相對而言,配置和使用更為簡單,能夠滿足常見的任務調度,比較適合作為中小型項目的任務調度系統。

Azkaban 和 Oozie 詳情對比如下:

  • 功能

    兩者均可以調度 mapreduce,pig,java,腳本工作流任務
    兩者均可以定時執行工作流任務

  • 工作流定義

    Azkaban 使用 Properties 文件定義工作流
    Oozie 使用 XML 文件定義工作流

  • 工作流傳參

    Azkaban 支持直接傳參

    Oozie 支持參數和 EL 表達式

  • 定時執行

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

  • 資源管理

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

  • 工作流執行

    Azkaban 有兩種運行模式,分別是單機模式和集群模式
    Oozie 作為工作流服務器運行,支持多用戶和多工作流

  • 工作流管理

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

Azkaban 運行模式及架構

image-20210519220432495

Azkaban 三大核心組件
  • 關系型元數據庫(MySQL)
  • Azkaban Web Server
  • Azkaban Executor Server
Azkaban有兩種部署方式
  • solo server mode(單機模式)

    WebServer 和 ExecutorServer 在同一個進程

  • cluster server mode(集群模式)

    WebServe r和 ExecutorServer 運行在不同進程,並用數據庫保存定義及狀態

    • 單個Executor
    • 多個Executor

Azkaban Web Server

AzkabanWebServer 是 Azkaban 的主要管理者,負責項目管理、身份驗證、調度和監控執行,並且為用戶界面

Azkaban Executor

提交和執行工作流,記錄工作流日志,和 Azkaban WebServer 可以在同一台服務器,也可部署在獨立的機器。把 Executor 單獨分開有幾個好處:

  • 在多 Executor 模式下可以方便擴展
  • 工作流在某一個 Executor 掛掉,可以在另一個 Executor 上重試
  • 可以滾動升級,從而不影響調度

Azkaban 元數據庫

image-20210519220946638

Azkaban 任務調度步驟

  • Azkaban 新建項目
  • 在 Azkaban Web 界面創建 Project
  • 創建 job 文件
  • 將文件壓縮為 zip 文件
  • 上傳 zip 文件到 Web 界面
  • 執行調度

Azkaban 常見任務類型

執行 shell 命令
type=command
command=echo 'hello'
執行 shell 腳本
type=command
command=sh hello.sh
執行 Spark 程序
type=command
command=/usr/install/spark/bin/spark-submit --class com.test.AzkabanTest test-1.0-SNAPSHOT.jar
hive 命令\腳本
type=command
command=beeline -u jdbc:hive2://localhost:10000 -n hive -p hive -f 'test.sql'
執行 MapReduce 程序
type=command
command=${HADOOP_HOME}bin/hadoop jar hadoop-mapreduce-examples-2.8.0.jar
wordcount ${input} ${output}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM