阿里云云原生一體化數倉—離線實時一體化新能力解讀(云原生 阿里云)
實時離線一體化概述
在講實時離線一體化概述前,可以先回顧一下之前兩位阿里同學的精彩演講。 離線實時一體化數倉與湖倉一體–云原生大數據平臺的持續(xù)演講
https://developer.aliyun.com/article/804337
云原生離線實時一體化數倉建設與實踐:https://developer.aliyun.com/article/871926
當前從第一代離線數倉發(fā)展到第二代實時數倉,再到第三代實時離線一體化數倉,演進過程和價值可以參考上述兩篇文章,今天分享的主要內容是實時離線一體化數倉的新能力。
大數據數倉體系從“紛繁蕪雜”的一個架構演進到“化繁為簡”的實時離線一體化數倉,其核心是基于流式計算引擎對接了 MaxCompute Hologres離線及實時數倉,并通過互通實現數據的分層處理 。當前這套架構適用于海量數據的數據治理、離線分析、實時分析、數倉集市、多模分析、機器學習在線模型等場景,幫助客戶構建一站式的大數據分析平臺,釋放企業(yè)數據價值。
當前解決方案適用場景有數據實時分析 數據離線分析的業(yè)務,海量數據計算 分析實時性要求較高的業(yè)務。,海量數據分析、點查。多源、多樣、流量數據 業(yè)務數據的分析服務業(yè)務。在實際業(yè)務中,如果有對時效性要求比較低的,不需要用到實時分析,還是使用 MaxCompute 離線數倉為解決方案。如果業(yè)務場景中,類似在線告警、在線預測等,可以理解為整體鏈路沒有用到離線數據跟實時數據的一個結合。那就是典型的解決方案,比如實時計算Flink Hologres做為實時性比較高的實時數倉解決方案。
實時離線一體化,主要側重強調適配于有離線業(yè)務和實時在線業(yè)務混合的綜合應用場景,這樣可以解決多元多樣流量數據跟業(yè)務數據的一個分析服務業(yè)務。
實時離線一體化優(yōu)勢
從數據寫入來看呢,有實時數據和離線數據,流式數據都可以支持。MaxCompute 在數據寫入側的特點是支持高QPS寫入后,即可見即可查。從數據寫入的通道來看呢,當前實時離線一體化支持批量數據通道、流式數據通道、實時數據通道。以及在數據寫入之前比如kafka、Flink這種中間插件的支持,從一個數據源,從消息服務中間件,把數據寫入到 MaxCompute 中間零代碼開發(fā),可以直接用 MaxCompute 支持的插件來做。Hologres本身支持高性能寫入和實時寫入更新,以及寫入 即可查的能力,MaxCompute Hologres相結合,覆蓋了批量數據寫入、流式數據寫入、實時數據寫入以及寫入即可查的產品支持。
數據計算是多引擎支持,基于 MaxCompute 支持EB量級數據計算,在 MaxCompute 本身計算引擎內支持spark、MR、SQL。數據寫入后,MaxCompute支持用 spark 流式處理,也可以用 MaxCompute SQL批處理。多引擎支持下實時計算延遲到秒級乃至毫秒級,單個作業(yè)吞吐量可達到百萬級。
在數據共享互通方面,是做到了MaxCompute&Hologres的數據互通,存儲直讀打通,可以從Hologres直讀 MaxCompute 的數據,從 MaxCompute 到Hologres,當前上線的功能是通過外表去讀取,直讀的功能很快也會上線。這樣一個優(yōu)勢,可以做到同一份數據,用一個實時引擎一個離線引擎做處理,能夠實現數據不移動的情況下,可以在離線數倉處理完,在實時數倉做匯總,或者是從實時數倉讀實時數據,結合離線數據去做融合數據計算跟分析。
在分析服務一體化優(yōu)勢方面,這里本身有一個很大的特點是,MaxCompute 本身支持數據的交互式查詢是秒級別的,因為MaxCompute提供了查詢加速的一個能力,滿足的場景就是 秒級查詢,如果實時性要求更高如亞秒級毫秒級,可以直接在分析層應用對接到Hologres,支持PB量級亞秒級交互式分析。
實時離線一體產品新能力解讀
把實時離線一體化架構優(yōu)點拆分到整個數倉開發(fā)鏈路里面,對應到一些產品能力。數倉的開發(fā)過程是從數據源->數據寫入->數據清洗->業(yè)務級聚合->數據分析&服務->AI&Reporting。在數據分析服務或者是一些在線應用場景里面,有第三方也有自用的產品應用封裝,以及一些AI場景的在線分析服務,這時可以對接到數據分析服務的一個接口,也可以對接到MaxCompute數倉里面的數據,或者是oss的數據,可以根據自身業(yè)務場景來決定。
在數據源,我們支持第三方插件,如Kafka Connector,Logstash Connector,Flink Connector。數據寫入層,支持批量數據通道、流式數據通道:行文件支持自動merge、實時數據通道。很快會提供基于數據寫入的獨享資源,也就是商業(yè)化資源,目前寫入的計算資源是公共集群,免費提供,對于大業(yè)務量需求時,可能會出現延遲。不久會發(fā)布upsert能力,可以把業(yè)務庫如rds數據實時更新到MaxCompute。
從數據清洗來看,數據在寫入MaxCompute過程中,支持update和delete能力,在這個過程中也在業(yè)務聚合這一層做了物化視圖和漸進計算,以及規(guī)劃中的自動化物化視圖。在數據分析服務這一層,MaxCompute 提供了查詢加速能力,在后付費過程無感知查詢加速能力,以及在邀測過程中的預付費獨享資源MCQA的查詢。之前發(fā)布了針對預付費查詢加速免費額度的一個能力,每天每個project有500次單個SQL10G 以下的查詢額度。后續(xù)針對數據服務的一個對接,以及第三方應用的對接,如果用戶是預付費,基于已購資源切分出一個資源組,作為獨立查詢加速資源,來滿足包年包月用戶。如果對數據分析服務有更高的交互式詳細要求,可以對接Hologres。
在Hologres這一側,我們通過 MaxCompute 到 Hologres 的外表支持以及 Hologres 到 MaxCompute 存儲直讀,來實現數據的互通。后續(xù)的規(guī)劃能力,我們會做一個元數據打通,以及 MaxCompute 到 Hologres 的直讀能力。在上層BI報表分析過程當中,做了生態(tài)的一些接入,如網易有數、觀遠BI、自主分析、在線服務有AI的在線模型,在線訓練會直接對接到MaxCompute數倉數據。
實時離線一體產品新能力漸進計算
漸進計算從概念上來看,是一種能夠通過處理增量數據并維護中間狀態(tài)來完成計算的形式,處于傳統(tǒng)流計算和批處理之間??梢钥吹较聢D,有一張交易表,是在某一個日期比如十二點一點到兩點,每一個時間點都有交易數據。也就是說,通過漸進計算,可以把每一個小時匯總的交易訂單金額和交易訂單,完成小時級別的統(tǒng)計,匯總到每個小時生產的單獨文件,也就是說,漸進計算會自動把交易明細數據,做一個輕度的匯總。這樣查數據時,就不需要去統(tǒng)計一個小時或者幾個小時的數據,我們可以通過漸進計算完成輕度匯總之后,直接去查統(tǒng)計好的數據。這個示例可以表明,交易訂單數據也可以實時或者近實時寫入MaxCompute中,也可以實時寫入到Hologres??梢愿鶕I(yè)務需求來做,比如寫入進Hologres,相當于從訂單數據到Hologres中,可以在流式鏈路里面做實時計算去完成小時級別的窗口統(tǒng)計數據,去做輕度匯總。如果寫入MaxCompute,可以通過漸進計算完成小時級別的輕度匯總統(tǒng)計。在這個過程中,做到了實時數據實時寫入,以及近實時的輕度匯總和上層的聚會,可以對數據分析服務提供數據的查詢能力。
漸進計算的用途和優(yōu)勢在于,可以根據數據按窗口周期存儲,對查詢最近的數據時,可以減少計算,節(jié)省計算資源的同時,提高計算效率。每次去訪問時,不用去查明細表,可以直接去查輕度匯總數據,這樣無論是速度還是體驗都有一個巨大的提升。比如從交易訂單的數據,通過datahub流式寫入到MaxCompute,在MaxCompute中完成漸進計算的輕度匯總,以及后續(xù)的數據消費,這一套鏈路是近實時的。另外一條鏈路是,datahub通過Flink去消費,由Flink完成各種統(tǒng)計,以及其他維度的計算,再寫入到Hologres來提供消費服務的一個能力。
實時離線一體化產品新能力物化視圖
物化視圖是包括一個查詢結果的數據庫對象,他是遠程數據的本地副本,或者用來生產基于數據表求和的匯總表??梢钥聪聢D示例,有一個訂單表order保存明細訂單記錄,org組織機構表保存組織機構數據,如果查數據匯總時,需要把兩張表數據先做關聯,如下圖示例代碼。如果有物化視圖,視圖表就可以取代用戶查詢匯總的代碼腳本,查詢時直接查視圖表即可。在這個過程中,物化視圖支持用戶設置數據更新頻率,最快是五分鐘,可以根據需求來做視圖表的更新。
物化視圖的用途與優(yōu)勢在于,數據在寫入時計算,數據進行預計算,提高查詢效率,對客戶透明,自動改寫。比如訂單數據實時的寫入,可以通過物化視圖每五分鐘更新來實現上層應用數據的近實時匯總統(tǒng)計查詢。如果這條鏈路在Hologres,可以走實時數倉鏈路來完成。MaxCompute 提供的物化視圖能力,滿足客戶對數據時效性要求高,但又不是實時的數據更新需求。
那在整條開發(fā)鏈路里面,流式數據或批量數據寫入之后,在 MaxCompute 中可以通過物化視圖 和漸進計算來完成數據匯總,再通過MCQA查詢加速能力提供秒級別對外數據分析服務的能力。如果對交互式查詢返回時延要求高,可以做匯總數據時把數據匯總到Hologres,通過Hologres對外提供數據分析服務能力,這個交互響應時間可以達到毫秒級別。
實時離線一體化數倉架構
從架構來看,化繁為簡之后的架構從左到右,可以直接通過Datahub數據總線把數據寫入到 MaxCompute ,也通過實時計算(實時計算Flink版)消費數據總線(DataHub)實時數據寫入Hologres提供分析服務。這一套架構有兩條鏈路,如果業(yè)務響應時間要求非常高,可以走實時數倉鏈路,Datahub數據通過Flink完成實時數據計算寫入實時數倉Hologres,提供數據給數據產品或者是實時大屏。如果對業(yè)務響應時間要求不高的,可以通多Datahub直接寫入數據到 MaxCompute。
在實時計算Flink消費實時在線數據時,也有不同的計算指標需要呈現到離線數倉 MaxCompute 中,跟 MaxCompute中的一些數據做聚合計算,可以通過Hologres 直讀的方式讀取到MaxCompute聚合后的數據。通過Hologres 對外提供在線數據分析服務能力,底層數據可以是Hologres中的數據,也可以是MaxCompute中的數據。當前架構主要體現出的是實時離線一體化,但湖倉一體是在這一套架構中。不管是離線數倉還是實時數倉都可以跟數據湖中的數據互通。
基于當前架構主要提供了三個維度的服務能力
實時鏈路:通過實時計算(實時計算Flink版)消費數據總線(DataHub)實時數據寫入Hologres提供分析服務。
低延時或手動觸發(fā):Flink/DataHub通過流式寫入MaxCompute,應用物化視圖進行預計算提供業(yè)務聚合數據基于查詢加速的分析服務。消除了對作業(yè)和調度的管理。
批處理:MaxCompute支持多種數據來源的數據,進行大量同步和處理的數據計算。
實時離線一體化數倉數據建模
那實時離線一體化怎么使用呢? 可以看下圖示例。
電信運營商流量采集業(yè)務分析:根據對流量采集業(yè)務分析,比較適合數據倉庫常用建模方法——雪花模型。依據業(yè)務特征和雪花模型建模原則,完成數倉建模。
實時離線一體化數倉分層
此示例中,運營商流量表為實時數據表,針對流量表關聯了采集機維度表和地域維度表,構建了基于實時流量數據的雪花模型。模型做完后,基于數倉的分層是,ods層為采集的流量表數據和采集機規(guī)則表,同步到MaxCompute或Hologres做相應規(guī)則處理。在dwd明細數據這一層,主要針對清洗完之后數據形成采集流量明細表和采集機規(guī)則事件明細表。如果是實時離線相結合的架構,dwd層數據可以匯總到Hologres中。如果是匯總到MaxCompute,可以用分區(qū)表來實現,在分區(qū)表內計算時間或者事件規(guī)則相符合的數據,在分區(qū)表內做輕度匯總。針對匯總表再去完成采集規(guī)則事件的統(tǒng)計包括流量數據平均值的統(tǒng)計分析。
實時離線一體化案例場景
商家用戶下單總數
比如商家要根據用戶歷史下單數給用戶優(yōu)惠,商家需要看到歷史下了多少單,歷史T 1的數據要有,今天實時的數據也要有,這種場景是典型的實時離線一體化架構。我們可以在Hologres里設計一個分區(qū)表,一個是歷史分區(qū),一個是今日分區(qū),歷史分區(qū)可以通過離線的方式生產,今日指標可以通過實時的方式計算,寫到今日分區(qū)里,查詢的時候進行一個簡單的匯總。
車聯網
從左到右數據源有車端數據、CAN總線、用戶行為、車載TBox,通過Datahub數據總線,分別寫入實時計算Flink版進行消費寫入Hologres實時數倉,和MaxCompute 離線數倉做數據分析。實時數據可以通過Hologres直接對數據服務端停供在線服務分析和數據服務API。同時Hologres可以讀取在MaxCompute 中產生的批處理結果數據,也可以讀取到物化視圖或者漸進計算自動匯總的數據。同時MaxCompute 離線數倉也會處理用戶中心UDS和主機廠系統(tǒng)數據,這些數據有一些業(yè)務數據或者是T 1數據,這些數據處理完后,可以進行冷數據歸檔到oss,這些數據可以提供給標準的自動駕駛進行AI機器學習。這一套應用場景就是實時離線一體化的標準使用場景。
原文鏈接:http://click.aliyun.com/m/1000347185/
本文為阿里云原創(chuàng)內容,未經允許不得轉載。