Hadoop - 任務調度系統比較

1.概述

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

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上的官方文檔,這裏就很少作贅述了。oop

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去閱讀官方給出的文檔。htm

3.總結

  關於調度系統的選擇,這裏就比較了這3種,你們能夠適狀況而定,另外,如果條件容許或是有精力也能夠參考這些調度系統的原理,開發一套知足本身當前業務的調度系統,也不失爲一種選擇。

4.結束語

  這篇博客就和你們分享到這裏,若是你們在研究學習的過程中有什麼問題,能夠加羣進行討論或發送郵件給我,我會盡我所能爲您解答,與君共勉!

相關文章
相關標籤/搜索