基於Doris的有道精品課數據中臺建設實踐

2021-01-10 計算機java編程

本文以我們在實時數倉選型的經驗為切入點,進一步著重分享使用Doris過程中遇到的問題以及我們針對這些問題所做出的調整和優化。

1 背景

1.1 業務場景

根據業務需求,目前有道精品課的數據層架構上可分為離線和實時兩部分。 離線系統主要處理埋點相關數據,採用批處理的方式定時計算。

而實時流數據主要來源於各個業務系統實時產生的數據流以及資料庫的變更日誌,需要考慮數據的準確性、實時性和時序特徵,處理過程非常複雜。

有道精品課數據中臺團隊依託於其實時計算能力在整個數據架構中主要承擔了實時數據處理的角色,同時為下游離線數倉提供實時數據同步服務。

數據中臺主要服務的用戶角色和對應的數據需求如下:

運營/策略/負責人主要查看學生的整體情況,查詢數據中臺的一些課程維度實時聚合數據輔導/銷售主要關注所服務學生的各種實時明細數據品控主要查看課程/老師/輔導各維度整體數據,通過T+1的離線報表進行查看數據分析師對數據中臺T+1同步到離線數倉的數據進行交互式分析1.2 數據中臺前期系統架構及業務痛點

如上圖所示,在數據中臺1.0架構中我們的實時數據存儲主要依託於Elasticsearch,遇到了以下幾個問題:

聚合查詢效率不高數據壓縮空間低不支持多索引的join,在業務設計上我們只能設置很多大寬表來解決問題不支持標準SQL,查詢成本較高2 實時數倉選型

基於上面的業務痛點,我們開始對實時數倉進行調研。當時調研了Doris, ClickHouse, TiDB+TiFlash, Druid, Kylin。

由於起初我們數據中臺只有兩名開發,而且存儲相關的東西需要自行運維,所以我們對運維的成本是比較敏感的,在這一方面我們首先淘汰了Kylin和ClickHouse。

在查詢方面,我們的場景大多為明細+聚合多維度的分析,所以Druid也被排除。

最後我們對聚合分析的效率方面進行對比,由於Doris支持Bitmap和RollUp,而TiDB+TiFlash不支持,所以我們最終選擇了Doris來作為我們數據中臺的主存儲。

3 基於Apache Doris的數據中臺2.0

3.1 架構升級

在完成了實時數倉的選型後,我們針對Doris做了一些架構上的改變以發揮它最大的作用,主要分為以下幾個方面:

Flink雙寫

將所有FlinkJob改寫,在寫入Elasticsearch的時候旁路輸出一份數據到Kafka,並對複雜嵌套數據創建下遊任務進行轉化發送到Kafka,Doris使用RoutineLoad導入數據。

Doris on ES

由於之前我們的實時數倉只有ES,所以在使用Doris的初期,我們選擇了通過Doris創建ES外表的方式來完善我們的Doris數倉底表。同時也降低了查詢成本,業務方可以無感知地使用數倉底表。

具體查詢Demo如下所示,我們通過學生的基礎信息Join各種練習信息,對學生數據進行補齊。

數據同步

原來我們使用ES的時候,由於很多表沒有數據寫入時間,數據分析師需要每天掃全表導出全量數據到Hive,這對我們的集群有很大壓力,並且也會導致數據延遲上升,我們在引入了Doris後,對所有數倉表都添加 eventStamp, updateStamp, deleted這三個欄位。

eventStamp:事件發生時間updateStamp:Doris數據更新時間,在Routine Load中生成deleted:數據是否刪除,由於我們很多實時數倉需要定時同步到離線數倉,所以數據需要採取軟刪除的模式數據對下遊同步時可以靈活的選擇eventStamp或者updateStamp進行增量同步。

數據同步我們採用了多種方式,通過Hive表名後綴來決定不同同步場景:

_f:每天/每小時全量同步,基於Doris Export全量導出_i:每天/每小時增量同步,基於Doris Export按分區導出/網易易數掃表導出_d:每天鏡像同步,基於Doris Export全量導出

指標域劃分/數據分層

將Elasticsearch中的數據進行整理並結合後續的業務場景,我們劃分出了如下四個指標域:

根據上面的指標域,我們基於星型模型開始構建實時數倉,在Doris中構建了20餘張數倉底表以及10餘張維表,通過網易易數構建了完整的指標系統。

微批生成DWS/ADS層

由於我們多數場景都是明細+聚合數據的分析,所以我們基於Doris insert into select的導入方式,實現了一套定時根據DWD層數據生成DWS/ADS層數據的邏輯,延遲最低可以支持到分鐘級,整體的多層數倉表計算流程如下圖:

對於明細數據在TiDB或者ES的,我們選擇了在Flink中進行窗口聚合寫入到下遊Doris或者ES中。而對於明細數據只在Doris單獨存在的數據,由於我們大部分使用了異步寫入的方式,所以數據無法立即可讀,我們在外圍構建了支持模版化配置的定時執行引擎,支持分鐘/小時級別的掃描明細表變更寫入下遊聚合表,具體模版配置如下圖:

需要對監聽的源表以及變更欄位進行配置,在配置的interval時間窗口內多個源表進行掃描,然後將結果進行merge後生成參數,根據配置的threshold對參數進行拆分後傳入多個insert sql中,並在每天凌晨進行T+1的全量聚合,修復微批計算的錯誤數據。

具體的計算觸發邏輯如下圖:

數據血緣

我們基於拉取Routine Load和Flink數據以及服務上報的方式實現了數據中臺完善的數據血緣,供數據開發/數據分析師進行查詢。

由於我們的Flink開發模式為提交jar的形式,為了獲取到任務的血緣,我們對每個算子的命名進行了格式化封裝,血緣服務定時的拉取/v1/jobs/overview數據進行解析,我們將不同算子的格式命名封裝為以下幾種:

Source:sourceTypeName [address] [attr]Sink:sinkTypeName [address] [attr]具體的血緣服務邏輯如下圖所示:

通過血緣服務內部的解析後,批量地將血緣數據拆分成了Node與Edge存儲到了NebulaGraph中,前臺服務進行查詢即可獲得如下圖所示的一條完整血緣:

3.2 數據中臺2.0架構

基於圍繞Doris的系統架構調整,我們完成了數據中臺2.0架構

使用網易易數數據運河替換Canal,擁有了更完善的數據訂閱監控Flink 計算層引入 Redis/Tidb 來做臨時/持久化緩存複雜業務邏輯拆分至 Grpc 服務,減輕 Flink 中的業務邏輯數據適配層新增 Restful 服務,實現一些 case by case 的複雜指標獲取需求通過網易易數離線調度跑通了實時到離線的數據同步新增了數據報表/自助分析系統兩個數據出口

4 Doris帶來的收益

1. 數據導入方式簡單,我們針對不同業務場景使用了三種導入方式

Routine Load:實時異步數據導入Broker Load:定時同步離線數倉數據,用於查詢加速Insert into:定時通過DWD層數倉表生成DWS/ADS層數倉表2. 數據佔用空間降低,由原來Es中的1T左右降低到了200G左右

3. 數倉使用成本降低

Doris支持MySQL協議,數據分析師可以直接進行自助取數,一些臨時分析需求不需要再將Elasticsearch數據同步到Hive供分析師進行查詢。一些在ES中的明細表我們通過Doris外表的方式暴露查詢,大大降低了業務方的查詢成本。同時因為Doris支持Join,原來一些需要查詢多個Index再從內存中計算的邏輯可以直接下推到Doris中,提升了查詢服務的穩定性,加快了響應時間。聚合計算速度通過物化視圖和列存優勢獲得了較大提升。5 上線表現

目前已經上線了幾十個實時數據報表,在線集群的P99穩定在1s左右。同時也上線了一些長耗時分析型查詢,離線集群的P99穩定在1min左右。

同時我們基於Doris完成了標準化數倉的構建,在數據開發上跑通了一套完整的流程,使我們數據需求的日常迭代更加迅速。

6 總結和規劃

Doris的引入推進了有道精品課數據分層的構建,加速了實時數倉的規範化進程。

數據中臺團隊在此基礎上一方面向全平臺各業務線提供統一的數據接口,並依託於Doris生產實時數據看板,另一方面定時將實時數倉數據同步至下游離線數倉供分析師進行自助分析,為實時和離線場景提供數據支撐。

對於後續工作的開展,我們做了如下規劃:

基於Doris明細表生成更多的上層聚合表,降低Doris計算壓力,提高查詢服務的整體響應時間基於Flink實現Doris Connector,實現Flink對Doris的讀寫功能開發Doris on ES支持嵌套數據的查詢最後感謝百度Palo(Doris)團隊的鼎力支持,為我們提供了很多技術上的幫助,在問題的解決上也十分迅速,為我們數據中臺的飛速發展提供了可靠的支持。

關於 Apache Doris(Incubating)

Apache Doris(Incubating)一款基於大規模並行處理技術的交互式SQL分析資料庫,由百度於2018年貢獻給 Apache 基金會,目前在 Apache 基金會孵化器中。

相關焦點

  • 有道精品課贊助《乘風破浪的姐姐2》,搶佔初高中在線教育「第一...
    網臺聯播使節目的覆蓋人群進一步擴大,行業預估其收視率將進一步提升。有道精品課此次贊助頂流綜藝,也將進一步受惠於該綜藝節目龐大的流量。不僅如此,《姐姐2》召集了30位超過30歲的女藝人。其中不少人既是姐姐,更是媽媽。「姐姐」們自帶的話題及流量,既與教育話題相關聯,又具備較強號召力——實現了流量的廣度與垂直用戶的深度相結合。
  • Apache Doris 在 WeLab實時大數據平臺的應用實踐
    2、實時自助BI報表在大數據平臺建設初期,我們完全依賴Hadoop技術生態,利用離線計算提供分析服務。但是Hadoop技術棧對實時性支持得不夠好,而且基於Hadoop技術棧開發報表成本比較高,不夠靈活。另一方面,在這個時期,報表的輸出都是以傳統BI的模式提供的,但是傳統BI部署開發周期較長,需進行整體的架構設計,各個模塊均需要進行技術開發。
  • 有道精品課籤約郎平,在線大班課營銷戰升溫
    與此同時,有道精品課還透露將在本周五正式發布全新的2020暑秋課程。升級後的課程將繼續主打名師、迭代升級課程,在課程、禮盒設計中也會融入郎平以及女排的元素。這是有道難得的一次「高調」發聲,這一發聲,意味著有道將聚焦K12大班課、強勢入局2020暑秋招生爭奪戰。
  • 有道精品課靠譜嗎?能不能作為少兒輔導的課程?
    有道精品課靠譜嗎?」之類的問題。其實,對於廣大家長而言孩子的教育是一生的事業,大部分的家長都希望給孩子好的教育,因此關注少兒教育輔導模式、關注有道精品課這樣的在線輔導機構是很正常的事情。在眾多在線教育輔導平臺中,有道精品課受到了眾多家長的關注。那麼有道精品課靠譜嗎?相信看我接下來的內容,各位家長應該會有答案!
  • 有道精品課為何受信任?優質教學體驗是關鍵!
    在網際網路時代,有道精品課這類優質的在線教育輔導機構成為廣大家長的後備選擇之一。在線教育平臺迅速發展,有道精品課脫穎而出與傳統的線下輔導機構相比,在線教育平臺教學資源更豐富,教學模式更系統,授課學習體驗也不錯。種種因素,使得廣大家長願意信賴在線教育品牌。
  • 做紅燒排骨講解「美拉德反應」有道精品課名師在B站開播
    化學老師變身實驗室博士,教大家在家自製消毒液;物理老師為講解電磁場,拆音箱找磁鐵;地理老師為了講清楚盆地概念,用自家臉盆做道具強勢模擬…… 據了解,從2月15日到2月21日,有道精品課共先後派出初高中數十位名師現身B站直播間,上線42堂精品課,被贊「最懂學生的網課」。
  • 郎平代言有道精品課 王一博代言魔爪
    在一個小時的直播過程中,斬獲了約2.1萬觀看,帶貨158件。據了解,在11號當天,「馬教練運動戶外旗艦店」正式入駐拼多多,這是馬布裡站內唯一官方店鋪。店內的八款籃球,將以全網最低價,上線拼多多「百億補貼」專區。此外,這也是拼多多邀請的第一位體育明星。
  • 有沒有人知道有道精品課靠譜嗎?有經驗的來分享
    比如近期有很多人在關心網易旗下的有道精品課靠譜嗎,接下來給大家分享一下。 有道精品課是網易有道公司旗下一個名師在線直播課程的品牌,主要產品服務包括達爾文智能教學系統和有道精品課教研團隊。
  • 數據中臺、數據湖到底是怎麼回事兒?
    了解數據在萬億規模下如何打造高性能和高可用的綜合型ETL管道化服務新技術/實用技術點:Flink、HUDI、數據湖、增量數倉馬金韜愛奇藝 | 數據中臺負責人馬金韜,目前就職於愛奇藝,負責數據中臺的規劃、建設和推廣工作,前後在360、百度和阿里巴巴等多家公司從事廣告和大數據相關工作,目前主要關注大數據技術生態
  • 有道精品課與猿輔導高三化學輔導班的聽課感受分享
    身邊的一些同學陸續報了網上輔導班,於是在徵得了爸媽同意後,我也找了有道精品課和猿輔導的高三化學輔導班試聽了下,希望通過報班能強化鞏固下化學。之前,聽同學說過有道精品課和猿輔導,這兩個都算得上是目前網上比較高人氣的線上輔導品牌了,但怎麼選還是親 自試聽過才知道了,我自己的體驗如下:先試聽了有道精品課,是之前學姐存的一期「高考化學二輪聯報班」的課程,主講老師是高東輝老師,後來網上查了下,高老師在高三化學把關這一方面特別有經驗,在高考命題分析方面也比較擅長。
  • Apache Doris在美團外賣數倉中的應用實踐
    在開源的大環境下,各種數據引擎百花齊放,但由於業務的複雜性與多樣性,目前並沒有哪個引擎能夠適配所有業務場景,因此希望通過我們的業務實踐與思考為大家提供一些經驗參考。美團外賣數倉技術團隊致力於將數據應用效率最大化,同時兼顧研發、生產與運維成本的最小化,建設持續進步的數倉能力,也歡迎大家多給我們提出建議。
  • 打造券商研究中臺,建設數據應用新生態——證券業數據治理與數據...
    對於券商研究所,基於業務邏輯進行的數據加工,以及基於數據進行的各類價值發現工作,都能夠以數字資產的形式被沉澱在研究中臺,實現數據資產化,能夠追溯數據使用過程並進行業務留痕,最終以標準化的數據產品形式進行輸出。從人才層面,基於研究中臺之上的各類應用進行的數據處理與跟蹤,通過可視化、自動化、可重複的方式,降低了傳統數據維護工作中的無效勞動,保障了數據質量。
  • 馬蜂窩數據中臺起步建設:數倉的架構、模型與應用
    一、馬蜂窩數據倉庫與數據中臺最近幾年,數據中臺概念的熱度一直不減。2018 年起,馬蜂窩也開始了自己的數據中臺探索之路。數據中臺到底是什麼?要不要建?和數據倉庫有什麼本質的區別?相信很多企業都在關注這些問題。
  • 體育營銷Top10|郎平代言有道精品課 王一博代言魔爪
    (詳見:)2.郎平成為網易有道精品課品牌代言人4月15日,網易有道公司旗下K12網校有道精品課暑秋班課程即將發布之際,有道精品課宣布已成功與中國女排總教練郎平籤約,邀請郎平成為有道精品課品牌代言人。網易有道CEO周楓表示,希望通過郎平身上永不言敗的精神鼓勵千千萬萬中國家庭學子在求學之路上一往無前,拼搏進取。此次宣布與郎平品牌代言正值有道精品課暑秋班發布之際,也代表著有道精品課正在為即將到來的暑期招生加碼。1.中國女排與作業幫直播課達成戰略合作
  • 終於有人把數據中臺講明白了
    而數據倉庫的建設則相對單一,專注於維度模型如何設計,如何拆解指標和維度,卻很少關注基於人、貨、場這些主體進行實體拉通,然後做出全局的畫像數據供前端業務調用。數據中臺是基於大數據、人工智慧等技術構建的數據採、存、通、管、用的平臺。 數據中臺需要以Hadoop、Spark等為代表的大數據處理技術做支撐,但絕不能將數據中臺與大數據劃等號。數據中臺不只有大數據處理技術,還包括智能算法、與業務聯動的特性、數據資產、數據工具等。
  • 雲原生生態大會Day2,網易數帆Service Mesh與百勝中國中臺架構實踐
    馮常健通過網易數帆研發輕舟Service Mesh滿足網易集團業務多元化發展的實踐,解析了企業實施Service Mesh架構過程的問題、對策以及落地關鍵要素,王必成和申海龍共同分享了百勝中國採用雲原生技術棧建設業務中臺的初衷,如何基於雲原生實現業務中臺,以及輕舟雲原生平臺在百勝中國中臺化進程中發揮的價值。
  • 基於SaaS模型下的業務中臺運營工作的搭建
    核心業務系統是業務中臺開展業務運營工作的重要載體,是業務中臺部門開展工作的重要場景,也是業務中臺部門開展工作的直接成果。那麼,該如何基於核心業務系統,搭建業務中臺部門的運營體系呢?這些系統的建設,方便了業務的行為管理工作和資源使用工作,另外,基於這樣的核心系統搭建的強大業務中臺部門,則不斷地把業務的資源、能力成規範地系統化、規則化,從而不斷地提升業務的作業模型效率。為了實現這一訴求,首要的是要求有一個強大的業務中臺部門,起到融會貫通的作用。
  • 網易嚴選畫像建設實踐
    基於此背景嚴選打造了具備行業特色的標籤和畫像中臺。本文的主題為網易嚴選畫像建設實踐,主要介紹嚴選標籤和畫像中臺的工具和方法論。01關於標籤和畫像1.02為什麼要建設標籤和畫像中臺嚴選建設標籤和畫像中臺主要是兩個目的:解決共性需求(用戶價值)和加速數據資產化及價值落地(商業價值)1. 解決共性需求目前行業中的標籤和畫像主要都是用戶標籤和用戶畫像,其應用場景主要是精準營銷和消費者洞察。
  • ...浙江國際海運職業技術學院基於學習通平臺的的思政課雲端教學模式
    2020年2月開始,在既有教學實踐經驗的基礎上,挖掘在線教學的長處,嘗試建立「在線課程」新模式——基於學習通平臺的的思政課雲端教學模式。課程採用學習通平臺已有課程督學、導學、進行學情數據管理,使用超星學習通籤到、主題討論、課堂提問、完成作業和發布資料,使用直播平臺闡釋重難點問題、互動與答疑,同時通過微信學習群在課堂與課後保持聯繫,提升學生的參與度與學習效果。
  • 數據+中臺,如何做到1+1大於2 明略科技數據中臺負責人劉國棟
    圖注:明略科技數據中臺負責人劉國棟數據中臺是一套涵蓋IT基礎體系規劃、組織架構、運營管理與服務支撐的完整體系,相互聯動協同支撐組織決策。通過數據中臺的建設,組織可以在關鍵決策緯度和環節進行數位化。數據中臺的建設,除了對組織的決策鏈條和體系進行數位化,還需要對組織的經驗、know-how進行系統化、體系化建設,並且將組織的數位化體系與Know-how體系進行結合,搭建協同機制。這三要素是數據中臺建設的核心。明略科技幫助組織打造的就是數據體系結合知識體系的數據中臺,可基於數據進行智能決策的數據中臺。