Hadoop - 任務調度系統比較


1.概述

  在Hadoop應用,隨着業務指標的迭代,而使其日趨復雜化的時候,管理Hadoop的相關應用會變成一件頭疼的事情,如:作業的依賴調度,任務的運行情況的監控,異常問題的排查等,這些問題會是的我們日常的工作變得復雜。那么,在沒有條件和精力去開發一套調度系統的情況下,我們去選擇一款第三方開源的調度系統,來盡量減輕和降低我們日常工作的復雜度,也是極好的。今天,筆者給大家比較幾種常見的調度系統,供大家去選擇。

2.內容

2.1 Oozie

  Oozie目前是托管在Apache基金會的,開源。在之前的博客《Oozie調度》一文當中,介紹相關Oozie的調度,如何去調度Hadoop的相關,大家可以從博客的文中所描述的內容看出,配置的過程略顯繁瑣和復雜,配置相關的調度任務比較麻煩,然其可視化界面也不是那么的直觀,另外,對UI界面要求較高的同學,此調度系統估計會讓你失望。若是對改調度系統感興趣的同學可以到《Oozie調度》一文中做相關細節的了解。這里就不多做贅述了。

2.2 Zeus

  它是一個Hadoop的作業平台,從Hadoop任務的調試運行到生產任務的周期調度,它支持任務的整個生命周期。從其功能來看,它支持以下任務:

  • Hadoop的MapReduce任務調度運行
  • Hive任務的調度運行
  • Shell任務的運行
  • Hive元數據的可視化展示查詢及數據預覽
  • Hadoop任務的自動調度

  其開源地址在Github上面,可在Github搜索Zeus,即可找到相關工程。Zeus是由阿里巴巴開源出來的,文檔在Github上描述的也比較詳細,其相關安裝步驟及使用方法可參考Github上的官方文檔,這里就不多做贅述了。

2.3 Azkaban

  這是由LinkedIn創建的一個批處理工作流,用於跑Hadoop的Jobs。Azkaban提供了一個易於使用的用戶界面來維護和跟蹤你的工作流程。其可視化界面如下所示:

  另外,Github上貢獻的Azkaban調度系統的源碼量不大,做二次開發難度不大。其功能點涉及以下內容:

  • 兼容Hadoop版本
  • 易用的Web UI
  • 簡單的Web和Http工作流的上傳
  • 項目工作區
  • 工作流調度
  • 模塊化和插件化
  • 認證和授權
  • 用戶行為跟蹤
  • 郵件告警失敗和成功
  • SLA告警
  • 重啟失敗的Jobs

  Azkaban的設計之初主要是基於可用性的考慮。在LinkedIn運行的有些年頭了,一直驅動着它們的Hadoop和數據倉庫。

  它由3個關鍵部分組成,分別是:

  • 關系行數據庫(MySQL):Azkaban使用MySQL去做一些狀態的存儲。AzkabanWebServer和AzkabanExecutorServer這兩個服務都需要接入到DB庫當中。
  • AzkabanWebServer:WebServer使用DB的原因如下:
    • 項目管理:對項目權限和上傳文件的管理。
    • 執行流程狀態:對正在執行的程序進行跟蹤。
    • 之前的流程或Jobs:通過搜索先前的工作和流程,去訪問它們的日志文件。
    • 調度程序:保持預定的工作狀態。
    • SLA:保持所有的SLA規則。
  • AzkabanExecutorServer:另外,ExecutorServer使用DB的原因如下所示:
    • 獲取項目:從數據庫中檢索項目文件。
    • 執行工作流或Jobs:檢索和更新流的數據,並執行。
    • Logs:存儲作業的輸出日志,並將其流入數據庫。
    • 不同的依賴進行交流:如果一個流在不同的執行器上運行,它將從數據庫中取取狀態。

  三者的關系圖,如下所示:

  關於其相關配置和使用,官方給出的文檔比較詳細,這里就不多贅述了。大家可以到Github去閱讀官方給出的文檔。

3.總結

  關於調度系統的選擇,這里就比較了這3種,大家可以適情況而定,另外,若是條件允許或是有精力也可以參考這些調度系統的原理,開發一套滿足自己當前業務的調度系統,也不失為一種選擇。

4.結束語

  這篇博客就和大家分享到這里,如果大家在研究學習的過程當中有什么問題,可以加群進行討論或發送郵件給我,我會盡我所能為您解答,與君共勉!

 


免責聲明!

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



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