Azkaban:來自Linkedin的批量工作流任務調度器

jopen 10年前發布 | 25K 次閱讀 Azkaban

Azkaban是由Linkedin開源的一個批量工作流任務調度器。Azkaban來自LinkedIn公司,用于管理他們的Hadoop批處理 工作流。日常生產環境中,為了得到想要的數據,通常需要執行很多作業,一批作業執行完畢,再將中間結果進一步處理,最后得到有價值的數據,因此作業之間執 行有先后順序和依賴關系。這樣的一組作業稱為一個工作流,Azkaban就是用來構建、運行和管理工作流的工具,它提供友好的Web用戶界面來維護和跟蹤 用戶的工作流程。Azkaban已經在LinkedIn運行了好幾年,管理著很多Hadoop和數據倉庫作業流,具有很強的可用性。

簡單來講,它有幾個特點:

  • 兼容各個版本的hadoop
  • 用戶可通過web頁面提交工作流,方便上傳工作流,方便設置任務之間的關系
  • 工作流調度
  • 系統模塊化和可插拔的插件機制
  • 用戶認證和權限驗證
  • 用戶操作追蹤
  • 任務執行結果郵件報警
  • 按照SLA執行報警和殺作業
  • 失敗作業重試,能夠殺死并重新啟動工作流
  • 項目工作區
  • 工作流和任務的日志記錄和審計
  • </ul>

    Azkaban目前有2個大版本,azkaban1.x和azkaban2.x,1系結構比較簡單,不需要依賴數據庫,執行器和調度器以及 webServer都集成在一起,缺點是沒有用戶和權限管理,其它功能不夠豐富,隨著用戶規模增大和系統健壯性需求,azkaban系統演進到最新2.x 版本。

    Azkaban 2由三個重要的組件組成

    Azkaban:來自Linkedin的批量工作流任務調度器

    • Azkaban Web Server:Azkaban使用Jetty作為Web服務器,除了提供web頁面響應服務,還負責項目管理,認證,調度,監控和發起執行,它是azkaban的大腦。
    • Azkaban Executor Server:負責作業的執行,對執行過程及結果進行監控,并將執行狀況匯報給Azkaban Web Server,兩者采用http接口進行通信。
    • MySQL: 負責存儲azkaban系統的數據,包括用戶上傳的工作流文件、作業執行的日志等。Executor Server和Web Server都通過jdbc頻繁地對其操作。
    • </ul>

      任務調度

      Azkaban里面除了按時間指定任務何時啟動,還可以指定任務周期:就是任務的重復執行頻率。這對于那些需要每天或每小時重復執行的任務很有用。 除了設置時間,還能設置任務的失敗策略和報警機制。比如可以選擇是第一次失敗就報警,還是整個流完成后報警。對于工作流中的單個任務還可以設置是否啟動。

      插件機制

      Azkaban支持可插拔的擴展插件,以便提供更多功能,更好的支持其他系統。例如hdfs查看插件可以查看hadoop上的文件。而job類型插 件則能夠定義具體的任務的啟動和執行方式,包括hive,pig等。用戶可以方便的擴展插件來支持不同的hadoop版本,或者支持其他的系統。

      權限管理

      一個登陸用戶對一個項目可以有以下五種權限:

      • ADMIN:最高權限,可以胡作非為,包括添加其它用戶權限和刪除項目
      • READ:查看作業、工作流、和相關日志
      • WRITE:上傳、修改項目工作流文件
      • EXECUTE:執行、暫停、取消作業。execute, pause, cancel jobs
      • SCHEDULE:添加、修改、刪除工作流調度命令
      • </ul>

        項目主頁:http://azkaban.github.io/azkaban2/

        引用地址:http://www.biaodianfu.com/azkaban.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!