
資料分析師作為企業資料資産的締造者之一,具有一定的次元與名額體系管理、血緣分析、ETL 排程平台等技能。能夠靈活使用排程平台會為資料分析師帶來很大的便利,然而對于程式設計技能水準參差不齊的資料分析師來說,一個操作簡單,使用成本低的排程平台才能讓他們如虎添翼,而不是增加額外的學習成本。
與大多企業相比,自如大資料平台的獨特之處在于,大量的數倉加工并非由專業的數倉工程師完成,而是由資料分析師所做。而自如的資料分析師之是以能夠做到專業團隊才能完成的複雜的資料處理、分析工作,與其排程系統遷移到 Apache DolphinScheduler 分不開。
在不久前的 Apache DolphinScheduler& Apache ShenYu(Incubating) Meetup 上,自如大資料研發經理 劉濤,為我們分享了受資料分析師們歡迎的排程系統是什麼樣的。
劉濤
自如大資料研發經理,負責自如大資料基礎平台建構,建設一站式大資料開發平台。
01 自如大資料平台現狀
自如大資料平台
上圖是自如大資料離線平台的簡單圖示,資料源包括 MySQL、Oracle 等業務庫資料,以及各種日志資料,通過 Hive 離線 T 加 1 采集、另外使用Hive acid加上Flink實作了一個10分鐘級别的業務庫資料更新。
資料加工是分析師關心的部分,這個過程可以配置排程、配置依賴和 SQL 開發。而在資料落地上,我們采用了 ClickHouse 的 OLAP 引擎,資料應用層使用網易有數提供報表平台。
自如的大資料平台與業界大多數平台相差不大,但獨特之處在于除了支援專業數倉開發工程師外,大量的資料分析師參與到了數倉加工之中。這就要求大資料平台要足夠簡化。
02 分析師的期望
由于資料分析師的編碼水準參差不齊,有些分析師會寫 SQL,而有些分析師根本不會寫 SQL。即使是對于會寫 SQL 的分析師,在面對任務依賴概念的了解上,也會覺得難度很大。
是以,分析師群體對于排程的期望是要簡單,上手成本低。
03 Airflow的實作方式
一開始,自如選用的是 Airflow,使用Airflow 可視化插件Airflow DAG createmanager plug-in來供分析師用,底層使用hivepartitionsensor,用資料依賴的方式配置排程,便于分析師了解和使用,這套解決方案,對于分析師來說體驗尚可,但是面臨幾個較大的問題:
資料依賴的底層實作導緻的任務重跑非常複雜;
任務量比較多後,排程性能較差,有些任務調起延遲較大;
與一站式大資料開發平台內建二開成本比較高;
原生不支援多租戶。
04 Apache DolphinScheduler改造與 Airflow任務遷移
以上幾個比較重要的挑戰,促使我們重新進行排程選型。經過對比分析後,我們選擇了 Apache DolphinScheduler。
對于分析師來說,資料依賴是一個好了解的概念,但任務依賴就比較讓人費解。
比較理想的方案是對分析師展示的是資料依賴,底層實作是任務依賴,并且這資料依賴是自動生産的,不需要分析師手動輸入依賴表。
做到這一點,首先需要解決一個問題,如何根據一段 SQL,判斷出這段 SQL 的輸入輸出表?
由于是在 Hive 的環境中,是以需要看下 Hive sql 的解析過程。
如上圖所示hive利用antlr 進行文法和語義解析,生成抽象文法樹。舉例,如下一段 sql 語句:
解析成的文法樹:
周遊這棵抽象文法樹就可以準确獲得輸入輸出,我們發現并不需要從頭來做,Hive 147 中就實作了這個功能。
https://issues.apache.org/jira/browse/HIVE-147
我們解析了輸入輸出之後,就可以把輸入輸出表和對應的 Apache DolphinScheduler排程任務關聯起來,這樣就完成了對分析師看到的是資料依賴,底層實作是任務依賴。當然這種實作就會讓每個任務都很小,大部分任務都是隻最終産出一張表,排程數量會比較多,但目前來看,沒有帶來性能問題。
這之後就是面臨的如何把Airflow中的任務平滑的遷移到 Apache DolphinScheduler 中,Airflow的任務都是一個個Python檔案,Airflow 的排程器不停地掃描Pyhton檔案所在檔案目錄,生成排程任務。核心實作類就是上圖中的 DagFileProcessorManager,我們就可以參考這個類的實作來解析Python任務,生成Apache DolphinScheduler 任務定義需要的 Json 串,進而完成排程任務的遷移。
最後是做個廣告,我們是自如大資料基礎平台,負責大資料的部署、 運維、 監控、優化、二開,并且在此之上建構一站式的大資料開發平台,歡迎加入我們。
我的分享就到這裡,感謝大家!
05 特别感謝
聯合主辦方
Apache ShenYu(Incubating)
合作方
示說網、開源中國、CSDN、稀土掘金、開源社、SeaTunnel 社群、思否 和 ALC 北京
禮品贊助
YY 直播
Apache ShenYu(Incubating)
感謝主持人,低代碼無代碼平台 Treelab 張德通,以及活動志願者 曹海洋 對本場活動的大力支援!
參與貢獻
随着國内開源的迅猛崛起,Apache DolphinScheduler 社群迎來蓬勃發展,為了做更好用、易用的排程,真誠歡迎熱愛開源的夥伴加入到開源社群中來,為中國開源崛起獻上一份自己的力量,讓本土開源走向全球。
參與 DolphinScheduler 社群有非常多的參與貢獻的方式,包括:
貢獻第一個PR(文檔、代碼) 我們也希望是簡單的,第一個PR用于熟悉送出的流程和社群協作以及感受社群的友好度。
社群彙總了以下适合新手的問題清單:https://github.com/apache/dolphinscheduler/issues/5689
非新手問題清單:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A"volunteer+wanted"
如何參與貢獻連結:https://dolphinscheduler.apache.org/zh-cn/docs/development/contribute.html
來吧,DolphinScheduler開源社群需要您的參與,為中國開源崛起添磚加瓦吧,哪怕隻是小小的一塊瓦,彙聚起來的力量也是巨大的。
參與開源可以近距離與各路高手切磋,迅速提升自己的技能,如果您想參與貢獻,我們有個貢獻者種子孵化群,可以添加社群小助手微信(Leonard-ds) ,手把手教會您( 貢獻者不分水準高低,有問必答,關鍵是有一顆願意貢獻的心 )。
添加小助手微信時請說明想參與貢獻。
來吧,開源社群非常期待您的參與。