挑戰海量數據:基于Apache DolphinScheduler對千億級數據應用實踐

點亮 ? Star · 照亮開源之路
GitHub:https://github.com/apache/dolphinscheduler

挑戰海量數據:基于Apache DolphinScheduler對千億級數據應用實踐

文章插圖
精彩回顧
近期,初靈科技的大數據開發工程師鐘霈合在社區活動的線上 Meetup 上中,給大家分享了《基于 Apache DolphinScheduler 對千億級數據的應用實踐》主題演講 。
我們對于千億級數據量的數據同步需求,進行分析和選型后,初靈科技最終決定使用DolphinScheduler進行任務調度,同時需要周期性調度 DataX、SparkSQL 等方式進行海量數據遷移 。在日常大數據工作中,利用DolphinScheduler減少日常運維工作量 。
講師介紹
挑戰海量數據:基于Apache DolphinScheduler對千億級數據應用實踐

文章插圖
?
鐘霈合
初靈科技 大數據開發工程師
演講大綱:
  1. 背景介紹
  2. 海量數據處理
  3. 應用場景
  4. 未來的規劃
背景介紹01 自研任務調度我們公司前期一直是用的自研的任務調度框架,隨著這個調度領域開源軟件的發展,涌現了很多像海豚調度這樣非常優秀的任務調度系統 , 而我們的需求已經到了必須要引入新的任務調度系統程度,來保證技術的更新迭代 。
02 需求分析1、支持多租戶的權限控制
我們在日常工作中不止研發會進行任務的調度,其他的業務部門和廠商都可能會在DS上跑一些任務 , 如果沒有多租戶的權限控制的話,那整個集群使用起來都會非常的混亂 。
2、上手簡單,支持可視化任務管理
上手簡單,因為我們團隊內部在很多時候,開發會給到數倉/業務團隊去使用 , 如果任務調度上手非常困難,如果需要進行大量的配置或者編寫代碼,相對成本就要高很多,相信在很多大數據團隊都會存在這個需求,并且有些項目需要快速迭代 , 所以對于選型的工具必然是上手簡單的 。
3、支持對任務及節點狀態進行監控
我們對任務調度原生監控主要有兩點需求,第一是服務器的監控,可以直接通過任務調度web頁面去看,第二是任務調度的監控 , 針對任務是否成功、執行時間等相關數據和狀態能夠一目了然 。
4、支持較為方便的重跑、補數
我們數據有實時、周期和離線三部分的,數據特性產生了這個需求,比如對于每15分鐘或者每小時的數據任務,如果不能很好的支持重跑和補數的話 , 對我們影響還是比較大的 。
5、支持高可用HA、彈性擴容、故障容錯
集群運維和故障管理方面也是需要支持的 。
6、支持時間參數
有時候需要基于時間參數進行數據的ETL周期操作 。
03 任務調度對比
挑戰海量數據:基于Apache DolphinScheduler對千億級數據應用實踐

文章插圖
?
Crontab
在Unix和類Unix系統中周期性地執行指令或腳本,用來在Linux上直接執行腳本,但只能用來運行腳本 。
不支持多租戶權限管理、平臺管理、分發執行等功能,在我們公司中的應用是在一些特點服務器跑一些臨時的腳本 。
并且原生Crontab只支持分鐘級別的調度,不支持重跑 。
Rundeck
Rundeck是一個基于Java和Grails的開源的運維自動化工具,提供了Web管理界面進行操作,同時提供命令行工具和WebAPI的訪問控制方式 。
像Ansible之類的工具一樣,Rundeck能夠幫助開發和運維人員更好地管理各個節點 。
分為企業版和免費版,免費版對于我們來說功能還是有點欠缺的 。
Quartz
Quartz 是一款開源且豐富特性的任務調度庫,是基于Java實現的任務調度框架,能夠集成與任何的java應用 。
需要使用Java編程語言編寫任務調度,這對于非研發團隊而言,是無法去推廣使用的 。
xxl-job
是一款國產開發的輕量級分布式調度工具,但功能比海豚調度少 。
其不依賴于大數據組件,而是依賴于MySQL,和海豚調度的依賴項是一樣的 。
Elastic-Job
是基于Quartz 二次開發的彈性分布式任務調度系統,初衷是面向高并發且復雜的任務 。
設計理念是無中心化的,通過ZooKeeper的選舉機制選舉出主服務器,如果主服務器掛了,會重新選舉新的主服務器 。
因此elasticjob具有良好的擴展性和可用性,但是使用和運維有一定的復雜度 。
Azkaban
Azkaban也是一個輕量級的任務調度框架,但其缺點是可視化支持不好,任務必須通過打一個zip包來進行實現,不是很方便 。
AirFlow
AirFlow是用Python寫的一款任務調度系統,界面很高大上,但不符合中國人的使用習慣 。

推薦閱讀