离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进
林偉,阿里云智能研究員、阿里云智能通用計算平臺MaxCompute、機器學習PAI平臺技術負責人
本篇內容將從三個部分為讀者講述離線實時一體化數倉與湖倉一體—云原生大數據平臺的持續演進。通過從數據湖到數倉的歷史,反思為什么要做湖倉一體,以及湖倉一體在今天這個階段為什么開始做離線和實時湖倉一體化的數倉。
- 湖倉一體
- 離線在線數倉一體化
- 智能數倉
希望這次的分享讓大家進一步理解我們為什么做湖倉一體。
一、湖倉一體
(1)?? 阿里巴巴從數據湖到數倉歷程
2007年的寧波戰略會議確定建立一個開發、協同、繁榮的電子商務生態系統,其中生態系統的核心是數據。但這個時候各個業務部門都在垂直式發展數據能力,用數據支撐商業的決策服務。這些數據中臺支撐了業務部門的發展。但我們發展到一個階段的時候,希望進一步挖掘出各個業務部門數據之間的關聯性,從而利用這些高階數據分析挖掘更高商業價值,我們遇到了很多的困難,因為數據來自不同的部門,不同的人會提供你不同的數據集,沒有清晰數據質量監控,你也不知道這些數據是不是完整的,你就需要花費很多時間不停的去校準數據。這個過程耗時太長且多數情況會做了非常多的無用功,這樣其實整體下降了公司的效率。
所以到了2012年,我們決定將所有的業務部門的數據都關聯起來,決心做『One Data,One Service』。其實這個過程就是典型一個數據湖升級到數倉的過程,但是因為我們缺乏很好湖倉一體的系統沉淀,這個過程非常艱難,我們稱之這個過程為“登月”。大家可以從這個名字可見中間的艱難。在這個時間段,各個團隊甚至需要停下日常的自身業務發展來配合整理數據,把所以原來已有的數據分析過程,搬到統一一套數倉系統上面。最終我們歷經18個月,在花了非常大的代價,于2015年的12月完成建立了統一大數據倉庫平臺建立,這就是阿里巴巴的MaxCompute。通過這個統一數倉平臺,無論是業務團隊、服務商家還是物流或其它環節都可以方便,迅捷,更好的挖掘商機。所以大家可以看到在阿里巴巴統一的大數據平臺完成后,業務成長也進入了快車道。這正是因為有更好的數據支撐,才使得商家、客戶都能快速的進行一些商業決策。
(2)??數據倉庫和數據湖的關系
從開發人員的角度看,數據湖更為靈活,更喜歡這種隨心所欲的模式,任意的引擎都可以去讀、寫,沒有約束,啟動也非常容易。
從數據管理者角度看,數據湖能作為起步,但達到特定規模時,把數據當作資產或者需要做更大的商業決策的時候,都希望有一個很好的數倉。
(3)??數據倉庫和數據湖系統的增長曲線
上圖的增長曲線,基本上也是阿里發展的曲線,最開始也是數據湖狀態,各個業務部門獨立發展,起步快、靈活性強。但當達到特定規模時,數據無人管理、每個業務部門的數據的邏輯語言不一致,很難對齊。所以當時花了50%、80%的無效時間在校驗數據,隨著規模的不斷擴大,這樣的損耗越來越大,迫使我們推動公司統一數據倉庫的建立。
(4)??湖倉一體
正是因為我們經歷過堪比“登月”的痛苦,所以我們不希望MaxCompute未來的企業客戶也經歷這么痛苦過程,所以我們構建湖倉一體的開發平臺。當公司規模較小的時候,可以運用數據湖能力更快定制自己的分析。公司成長到一定的階段,需要更好的數據管理和治理方式的時候,湖倉一體平臺可以無縫把數據以及數據分析進行有效的升級管理,使得公司對于數據管理更加規范。這就是湖倉一體整體設計背后的核心思想。
我們把湖的系統和倉的系統有機結合在一起,一開始是沒有元數據,你想要建立數倉的時候,我們有可以在湖上面來抽取這個元數據,這個元數據是和倉的元數據放在一個一體化的元數據的分析平臺上面。在這個元數據之上可以建立很多數據倉庫的數據管理平臺。
同時,在數據倉庫湖倉一體的平臺上面,我們有效支持很多分析引擎,有任務型的計算引擎,包括像MaxCompute是批處理、Flink是流式處理、機器學習等,還有開源的組件可以分析我們的數據;也有服務性質數據引擎可以支持交互式查詢服務,能夠去更加實時性很好的展示我們的數據,從而使得用戶可以在這個服務性引擎上去構建自己數據服務應用。
在引擎之上我們構建豐富數據管理工具從而能夠讓業務部門能夠進行高效整體的數據治理。而這都得益于我們把湖和倉的數據打通,這也是整體湖倉一體設計的核心。
二、離線在線數倉一體化
現今社會越來越便捷,客戶需要更快的做出商業決策。在雙十一GMV實時大屏、春晚直播實時大屏等數據分析,以及機器學習從離線模型走向在線模型的趨勢中我們都可以看到。這些需求推動了實時數倉的發展。
其實實時數倉和離線數倉有著相似的發展過程。當時實時系統發展的早期,我們首先考慮的是引擎,因為只有先有引擎了你才可以進行實時數據分析,所以阿里巴巴把研發精力放在Flink這樣的流計算引擎上。但是只有流計算引擎,類似數據湖的階段,我們缺乏將分析出來的結果數據進行管理,所以到了第二階段,我們利用我們離線數倉產品來管理這些分析結果,從而把分析結果納管到我們整體數據倉庫和數據管理中。但是把實時分析之后的結果放在離線數倉里面,顯然這樣是對于實時商業決策是不夠的及時。所以我們現在發展第三個階段:實時數倉。
我們會把流式引擎的分析結果結果實時的寫到實時數倉Hologres里面,從而能夠讓分析的結果更實時的進行BI的分析,從而有效的支持客戶實時商業決策。
這就是離線和在線數倉一體化的設計。
總結一下,原有的分析在離線和在線的數倉一體化之前是一個很紛繁的過程,有離線、有在線的、有很多不同的引擎,現在把它總結到或者簡化成上圖的架構。我們會用實時的引擎做預處理,做完預處理后,我們把這些數據寫入到MaxCompute離線的數倉,也可以同時寫入到Hologres實時數倉中里面,從而可以做更加實時的服務化的BI分析。而MaxCompute離線的數倉存儲的成本更低,吞吐的性能更好,可以做大量的離線數據分析,這就是離在線數倉一體化的設計。
有了一體化的設計,就可以給客戶帶來一個非常平衡的系統。根據數據的場景或者是業務的場景,你可以用批處理。并且通過數據的壓縮、冷存,數據根據熱和冷的方式做不同梯度的存儲,就可以得到更低成本的離線分析。
當對于數據的實時性的價值更加重視,可以用流計算的引擎去做。同時又希望有很快的交互式,希望快速通過各種方式的、各種維度、角度去觀察已生成好的報表。這時候可以利用交互式引擎,在高度提純過數據后的進行各個維度的洞察。
希望用湖倉一體化平臺就能夠達到一個好的平衡,根據實際的業務體量、要求、規模成本達到更好點。
總的來說,希望湖倉一體系統上,不管是離線還是在線。通過不同的分析引擎,支持各類分析,同時通過在線服務型引擎能夠實時進行BI,能夠達到低成本、自定義能力,以及實時和在線服務的各種平衡。讓客戶能夠根據實際業務場景選擇。
三、智能數倉
有了統一的數倉平臺,我們就可以在此之上建立強大的數據治理或者是分析平臺,這個就是我們的DataWorks。在這個平臺上面有很多數據建模工具,提供數據的質量和標準、提供血緣的分析、提供編程助理等等。正是因為湖倉一體在線和離線的一體化的底座能力,才賦予了我們有這樣的可能性去做到大數據開發和治理平臺更加智能化的方式。從而將更多經過驗證過有效數據治理經驗分享到我們企業客戶上。
更多關于大數據計算、云數據倉庫技術交流,歡迎掃碼查看咨詢。
原文鏈接:https://developer.aliyun.com/article/804337?
版權聲明:本文內容由阿里云實名注冊用戶自發貢獻,版權歸原作者所有,阿里云開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里云開發者社區用戶服務協議》和《阿里云開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。總結
以上是生活随笔為你收集整理的离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何让智能客服成为企业的生产力工具?
- 下一篇: Flink Forward Asia H