精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:新聞中心行業相關 → 正文

Single Engine + All Data :云器科技推出基于“增量計算”的一體化湖倉平臺

責任編輯:yang |來源:企業網D1Net  2023-10-17 15:17:52 原創文章 企業網D1Net

數據平臺領域發展20年,逐漸成為每個企業的基礎設施。作為一個進入“普惠期”的領域,當下的架構已經完美了嗎,主要問題和挑戰是什么?在2023年AI躍變式爆發的大背景下,數據平臺又該如何演進,以適應未來的數據使用場景?

本文將從上述問題的出發,盤點和整理技術演進的趨勢,并提出一體化架構將是下一代技術趨勢的方向。新架構通過創新的“增量計算”范式來統一數據分析中流、批、交互不同的計算形式,通過“湖倉一體”統一存儲形態,真正實現一體化Kappa架構。同時,新架構以湖倉存儲為基礎,具備開放性和擴展性,能夠對接支撐AI,具備進一步迭代和擴展能力。

大數據發展20年發展歷史概述

大數據是從 2003 年開始發展的,其標志性的開端是《MapReduce: Simplified Data Processing on Large Clusters》、《The Google File System》、《Bigtable: A Distributed Storage System for Structured Data》三篇論文的發表,作為大數據發展的起點,發展至今恰好20年。這20年我們可以將其概括為3 個階段:孕育期、發展期和普惠期。

第一階段-孕育期:2003 年~ 2010 年,谷歌為支持搜索業務奠基大數據領域,以論文的形式公開架構和技術細節;Yahoo開源其搜索后端的數據處理技術,并命名為Hadoop。

第二階段-發展期:2010年~2020 年,兩個關鍵事項有力地推動了大數據的發展:1)以 Hadoop 為核心的開源技術,即開源分布式大數據平臺的繁榮發展;2)是云計算技術,極大程度上降低了大數據平臺的建設門檻。當下主流的大數據平臺大都在 2012 年前后開始發展,比如 AWS Redshift 是云上數倉的典型代表;包括Snowflake的成立,阿里云與飛天大數據平臺起步等;

第三階段-普惠期:從2020年至未來的10年,我們認為是大數據的普惠期。為什么這樣講,普惠期有兩個特點,其一是業務進入收獲期:我們能看到千帆競發后,大部分企業被淘汰,少數企業通過競爭最終占領市場,并逐步形成規模,例如Snowflake 2020年上市;其二從技術角度來看,部分成熟場景下技術開始迭代式發展,如“批計算”、“流計算”和部分“交互分析”技術成熟后不斷被后來者挑戰;同時,場景繼續外延不斷引入的技術,如 AI 相關的技術由此外延衍生出來,呈現出對其他領域的輻射作用。目前我們能看到這幾個特征同時具備。

當下數據平臺的典型架構和主要痛點

當前典型的數據平臺架構是計算部分采用Lamdba架構,存儲層由數據湖或者數據倉庫構建。AI等基礎設施尚在發展成熟中。

以下通過三個不同場景數據架構的實例,總結當前數據平臺的典型架構:

    

我們將當前數據平臺簡化為如下典型架構圖,其中“不變”的部分用黑底來表示,“變”的部分用灰底來表示,如圖下可見。

 

圖4: 當前數據平臺典型架構圖(簡化版)

數據源

? 不變的部分(標準場景):
?        關系型數據庫:通過 CDC 等方式采集結構化數據。
?        操作類日志:通過 APP 或是 Webservice 采集的海量日志。

? 變化發展中的兩類(新場景):
?        IoT、智能設備數據:在物聯網普及之前,大多數據都是用人的行為數據。隨IoT類技術發展,設備的數據會逐步成為另外一個主要的數據來源。
?        半結構化和非結構化數據:隨著 AI 能力的增強,這部分數據開始被加速地采集上來。

數據處理

? 不變的部分(標準場景):
?        數據分析引擎分為“批處理”、“流計算”、“實時分析”,也都有各自比較固定的數據處理和分析的場景,通過組合的方式滿足不同業務需求,這個架構通常稱之為Lambda架構。
?        數據存儲架構分為“數據倉庫”與“數據湖”,二者都不算新概念,使用場景也比較固定,大多數企業選擇其一。例如hadoop體系就是一種典型的數據湖架構。

? 變化發展中的部分(新場景):
?        AI相關的場景和架構還在發展中,場景差異大,尚未標準化。而最近火熱發展的LLM又帶來額外的變化:部分企業會選擇,由一個特征工程開始到 Training 到 Serving 的端到端的 Pipeline;另一部分企業不再做特別多的 AI 訓練,而是在 Huggingface 上下載一些已有模型 ,只做基礎的 AI 處理。

“典型的/不變的”結構化數據架構(Lambda)仍然過于復雜

綜合上述,總結市面上大部分數據平臺通常會選用組裝式的Lambda架構,而其需要多個API接口與多種數據組件,數據冗余度高,開發維護復雜度高。面向未來,我們認為結構化數據處理分析的趨勢會是,由一個一體化的引擎,統一“流”、“批”和“交互分析”,進而提供統一接口、統一處理邏輯,提供多種優化指標的高覆蓋度和靈活調整的能力。

 

圖5: 數據分析架構圖,一種典型的Lamdba架構

Lambda組裝式架構普遍存在的三點問題:

1. 引擎數據語義均不統一,帶來極高的開發和維護人力成本。三種引擎各自獨立,查詢語言、數據語義均不統一,數據在三種引擎間流轉,開發和維護成本高。有統計數據表明用于運維這些系統的人力成本與資源成本相當。

2. 異構存儲,多套元數據,帶來大量的計算和存儲冗余和管理成本。三種引擎各自獨立但又相互關聯,為了做到局部語義統一,帶來大量的顯性、隱形的計算冗余。同時三種引擎通常配置各自獨立的存儲,帶來大量的數據冗余和數據同步的成本。湖和倉采用外表關聯,缺乏統一管理。統計這些計算和存儲冗余帶來數倍的成本負擔。

3. 缺乏滿足業務變化的靈活性。三種引擎開發運維獨立,且系統設計的優化方向不同。當用戶業務需要調整三個引擎間的配置(重新調整數據新鮮度、性能和成本的平衡點),就需要復雜的修改和重復開發。通常統計當前數據架構一旦固定下來調整的周期在 3 個月以上,難以適應靈活多變的業務發展。

但要解決這些問題,統一成一體化架構,并非數據架構師們不想,而是確有幾處難點,后文有詳細論述。

發展中的/變化的” AI 新計算范式,傳統數倉架構不能滿足,需要新架構的支持

AI給數據平臺帶來新的挑戰:AI需要更豐富的數據,數據需要更多樣的BI+AI應用。Data與AI的關系不再是Data+AI,而是Data*AI ——數據平臺不再是一對一的計算和存儲架構,而是 m 對 n 關系的架構,這樣的架構改變變化下,我們應該思考的問題是,由單點優化思路建設起來的lambda架構,能否迎接AI的挑戰,如果不能,改變的方向是什么?

 

圖6: 從1對1的數倉架構,到M對N的多元異構開放架構

關系型數據庫自 1970 年誕生,到 2010 年的 40 年時間里,都是采用傳統的數倉架構(如上圖左側)面對結構化的數據處理和分析,所以存儲系統的優化都是基于結構化數據的存儲來進行的,最終迭代出來的標準化SQL引擎,也是為了做結構化數據的分析。

而最近十年,特別是隨著深度學習技術的發展,ML/AI 拓寬了數據平臺需處理的數據類型,底層引擎模式隨之改變:

? 改變一,引擎以往只能處理結構化數據二維表,現在可以通過 AI 處理包括 test 、json 在內的半結構化數據,以及處理非結構化數據(音視圖數據);

? 改變二,引擎模式的頂層計算架構也在改變,類似生成式AI對文本和數據的直接理解和解讀,類似code interpreter通過理解數據語意做大模型的插件式、多語言融合式查詢分析,是除SQL的二維關系表達和分析引擎外,將AI的計算能力納入到引擎。

未來已來,面對AI帶來的改變,我們認為數據平臺的架構更應有兼具一體化與開放性的設計。開放式湖倉一體架構,是面向Data+AI融合場景的新趨勢。

一種面向未來的新數據平臺架構概述

如上所述,我們認為能夠面向未來的下一代數據平臺,是一體化的、開放、支持Data+AI的湖倉平臺,架構設計上:

? 數據存儲部分,由湖倉一體架構承接Data+AI的統一數據底盤;
?        數據引擎部分,打破Lambda架構限制,一個引擎完成多個場景;
?        面向AI部分,在湖倉一體底盤之上向上迭代,同時與下層存儲及數據分析引擎,做融合計算。比如我們可以有SQL和Python的融合計算,通過這種方式實現一個面向未來的存儲架構。

 

圖7:新一代數據平臺架構,基于統一分析引擎,統一湖倉一體存儲

從組裝式(Lambda)架構到一體化引擎難點在哪里?

組裝式 Lambda 架構存在的問題是業界普遍有深刻體感的,也有很多技術/產品試圖解決Lamdba架構的問題,但都不是很成功,為什么實現“一體化”的架構那么難?這主要有兩個原因:批、流、交互計算的計算形態不同,優化方向也不同。

 

圖8: 批、流、交互三種計算形態的差異

一、有不同的計算形態

將數據狀態分靜態數據與動態數據兩類。所謂靜態數據就是當 Query 下發的一瞬間,計算是在數據的一個版本(稱為 snapshot)上進行;而動態數據是指在持續變化中的數據,由數據主動驅動計算。數據 Query 也可分成靜態 Query 和動態 Query 兩類。所謂靜態 Query 的意思是像天報表或者小時報表一樣,我們知道它在某一個時間點上會發生。動態Query是指,用戶動態下發的,很難被預測。

由以上兩個維度,可以劃分出四個象限區間,可以看出批處理、流計算、交互式分析分屬不同象限:批處理是典型的靜態數據加靜態 Query 的流程,通常是一個 Pipeline 過程;交互分析是靜態數據加動態Query,高并發低延遲;批處理和交互分析,通常是計算向數據去,是主動計算處理被動數據的過程。流計算是動態數據加靜態計算的過程,當 Plan 發起之后,就一直等待數據進入,是一個主動數據驅動被動計算的過程。

二、有不同的優化方向

上圖三角為數據平臺不可能三角,即一個平臺不可能同時實現數據新鮮度、低成本和高性能三個目標。如流計算優化的是數據的新鮮度,引擎等數據,為了使得下一條數據進來時計算的足夠快,引擎是一直拉起的狀態,Reserve了大量資源。實時數倉系統是面向性能的,也需要等待數據,需要一個非常快的數據。批處理計算面向的是 Throughput ,即 Latency 延遲,能夠提供很高的 Throughput,帶來很低的 Cost。不同的優化方向使得三個引擎也不同。

Lambda架構流行的核心原因是,流、批和交互計算,剛好覆蓋了此三角,三個不同的引擎,每一個引擎的優化方向剛好是在一個角上。通過組合的方式滿足不同業務的需求。下圖更細節地比較批處理、流計算、交互式的異同。

 

表1: 批、流、交互三種計算形態的差異

上圖從6個不同角度對比,在此僅選兩個例子具體展開:

對比流計算和批計算的存儲系統:

批處理的存儲是通用存儲,采用數倉分層建模的方式,數據的中間表格可以被共享,可以被其他查詢優化。

而流計算是單獨的內置存儲,不可被共享,僅面向該計算模式優化;其中流計算兩個作業之間的存儲也不同,通常用Kafka做,是純粹增量化的存儲,且僅支持某一段時間的查詢,不能做全量數據Query。

所以存儲模式的不同和計算模式的不同,使得流和批都很難統一彼此。

對比批處理和交互計算的調度模型和資源模型:

批處理通常選擇Bulk Synchronous Parallel(BSP)調度模型,是一種逐層調度模式。批處理通常作業下發后,動態向Yarn/Kubernetes申請資源,具有極佳的資源使用效率,能夠降低成本。缺點是會造成資源排隊。

而交互分析為了更好的性能,通常采用Massive Parallel Processing(MPP)調度模型,資源需要保持預置,數據被靜態劃分好,面向低延遲和高性能優化,但有很高的成本。

調度/資源模型的不同使得批處理和實時分析引擎也很難統一。

綜上可以看出由于流、批、交互三種計算引擎的計算模型、數據驅動方式、存儲系統設計、調度系統設計、資源模型等均不相同,都很難覆蓋另外兩個的場景,他們三者本身難以完成統一計算模式。

“增量計算”統一批、流、交互三種計算模式

鑒于流、批、交互三種計算模式都不能完成模式的統一,我們提出第四種計算模式:增量計算。

增量計算定義:指的是將所有計算抽象成增量的形態,實現數據的一次計算、累次使用,節省計算資源,同時能提供靈活調整的“增量時間間隔”,達成批處理或者流處理效果。因增量方式顯著降低資源使用,也能大幅提升交互分析的性能并降低延遲。

 

圖9:通過增量計算的方式,實現批、流、交互三種計算模式的統一

增量計算的原理:

如左圖所示,x軸時間軸代表T0、T1和T2,當Query下發時,T0動態生成Plan,基于當前最優數據和計算情況,在T0數據里得到結果集ResultSet T0;當在T1時間下發同一個Query時,該Query的計算不再從0開始,而是在T0結果集的基礎上,結合T0到T1這一階段的數據,融合起來做增量計算,得到ResultSet T1,同時在為T2計算做狀態準備。

針對批處理,可以將其作為當T0為0,從T0到T1的增量計算模式的特例,是一種從頭開始的增量計算。在最佳實踐里,用戶通常不再保持按天的批處理,而是降低調度間隔來達成更好的近實時性。

針對流計算,流計算是天然的增量計算模型,可以通過縮短T0與T1中間間隔的時間來達成。

針對交互分析,與批處理類似,交互分析也可以抽象為增量化形態,并且更簡單,因為沒有后續,所以不需要再為下一階段計算做準備。同時,因為部分交互分析的數據是持續寫入的,部分之前的計算結果也可以被后來的作業利用,大幅降低計算量。

調度增量計算的時間間隔,是由用戶根據需要調整設定的。當把調度時間間隔調整的很短,例如調整為分鐘或者秒級,整個計算模式就愈接近流計算,而如果把間隔調整天,計算模式就等同于批處理。也就是說,計算模式的改變,只需要調整調度就能實現!

總結,增量計算模式有幾點優勢:


       第一,統一計算模式,進而能夠統一引擎,從根本上解決Lambda的痛點。

第二,每次Query在下發的時候,可以根據T0、T1中間的時間間隔做動態Plan,找到其中最優Plan的調節流程。能夠實現數據平臺不可能三角的平衡點,基于數據新鮮度、性能、成本的動態平衡,靈活地在三者之間找到多種多樣的平衡。

第三,結果集ResultSet均公開可用,能夠支持所有其他引擎或者平臺使用,更符合數倉建模設計邏輯,也更具開放性。

基于“增量計算”實現一體化Lakehouse數據平臺

增量計算可以解決計算模式的統一,即流、批、交互為一體;但對于數據平臺整體架構而言,還需要統一存儲和面向AI的能力,因此云器科技以增量計算為基礎,提出Single-Engine的數據平臺設計理念。

 

圖10:基于增量計算實現一體化Lakehouse數據平臺

基于增量計算數據計算新范式,云器科技實現了Single-Engine一體化平臺,包含如下三部分:

1. 用增量計算模式統一流、批和交互三種計算形態。

2. 用通用增量存儲的統一存儲形態。在湖倉存儲架構的基礎上增加了通用增量存儲,使得在湖倉之上能夠做增量的表達,該存儲需要做到以下三點:

• 實現大通用的存儲,是可以適應面向寫入Throughput和查詢高性能的兩個維度進行優化。

       • 數據存儲支撐兩種更新模型(Copy-on-write 與 Merge-on-read 兩種模式),通過 Compaction 達到效率和成本的平衡。

       • 實現數據的開放性,最終把數據的表達變成標準化的開源Iceberg存儲格式,使得其它的引擎或者平臺可以很方便地對接起來。

3. Share Everything架構。在ShareData架構基礎上增加了新維度,把數據、計算和資源三方拆開,使得批處理和交互分析在資源上可以做靈活調度。

至此,通過統一的計算模式、統一的增量存儲,并將數據、計算和資源Share Everything化,最終構成了云器Lakehouse的Single-Engine一體化架構。
云器Lakehouse具備以下關鍵能力:

1. 統一的接口,統一的語法/語義,統一且開放的數據表達(使得可以被其他引擎/工具消費)。數據與計算隔離,一套存儲支撐多種運算模式。

2. 提供面向數據新鮮度、查詢性能和資源成本三方面的多種平衡點(而不是面向三個頂點的極致優化)。具備多點優化能力,同時能支持三者之間的靈活調整。

3. 支持在平衡點之間做簡單靈活的調節。調整應該是簡單的,不需要修改大量代碼,不需要重新構建Pipeline。

4. 多種指標達到/超過當前主流產品的水平。通過Single-Engine在流、批、交互這三個場景上都有不遜于現在主流系統和架構的性能,甚至超越它們。

性能指標與能力衡量

云器Lakehouse作為一體化數據平臺,橫跨實時、離線、交互分析等多個場景,為了客觀地衡量數據集在不同場景下的表現,我們用業界標準的測試集在對應場景上,進行性能評估。特別的,云器Lakehouse由于采用了存算分離share-everything的系統架構,會通過限制virtual cluster(虛擬計算集群 abbr. VC)計算資源的規格來保證測試數據與其他產品的規格一致。盡管這樣的限制不利于發揮計算資源彈性伸縮的優勢,云器Lakehouse仍然在多個場景下同時表現出優異的性能,如圖11所示:

 

圖11:云器Lakehouse離線和實時分析場景性能指標

? 圖11-左1:大數據分析場景,TPC-DS 10TB是TPC發布的針對大數據系統的標準測試數據集,適合用于評估大數據處理及ETL處理過程,測試集包含對大數據集的統計、報表生成、聯機查詢、數據挖掘等復雜應用。以相同規格配置的處理時間評估,云器Lakehouse處理速度比Snowflake快30%,是Spark處理的9倍;

? 圖11-左2: 即時分析場景,TPC-H 100GB是由面向業務的臨時查詢和并發數據修改組成,適合用于對Ad-hoc臨時查詢評估。云器Lakehouse不僅在處理速度上達到了Spark 的7倍,且比Snowflake還要快4倍。

? 圖11-右1:  在實時分析場景,SSB-FLAT 100GB是以星型數據結構為主的數據測試集,適用于評估實時查詢性能,我們對比了Spark和Clickhouse,Snowflake。由于Spark是對批處理做優化的,實時分析會比較慢。而Clickhouse是專向實時分析優化的,它會更有優勢。測試結果顯示,云器Lakehouse比Clickhouse的快20%,是Snowflake的3倍。

在流計算領域,我們選取了4個典型場景做性能對比:

? Process場景:是單表下,單行的數據處理json展開的場景;

? 單流join場景:是雙表下,左表是一個固定的維表,Join右表是流動的實時表數據,這是一個標準的維表擴展場景;

? 單表聚合場景:是單表做aggregation,流動數據的聚合分析場景;

? 雙流join場景:是雙表流動數據的join場景。

 

圖12:流計算細分場景的資源消耗對比

在每個場景以Apache Flink做參照對比分析,由于Flink是一個“主動數據被動計算”的過程,會有占用資源和實際使用資源的區別。如圖12所示,每張圖的前兩個數據柱狀圖指標是flink,第一個柱子代表flink的資源占用,第二個代表flink的實際資源使用。而云器使用增量計算的模式,沒有資源占用和使用差異。6個深藍色柱子代表云器Lakehouse在不同的時間間隔的資源使用情況。

在Process場景和單流join場景(圖12-左1左2)屬于“無狀態計算”,云器基于自研的向量化引擎實現,比Flink以行式處理引擎的方式快至少10倍以上,此外可以看到無論調度間隔是10秒或間隔8小時,云器流計算資源消耗差異不大。

單表聚合場景和雙流join場景,由于要考慮歷史數據/狀態,屬于“帶歷史狀態計算”,調度間隔時間的調整會很大程度上影響計算資源的消耗,從圖12右1右2兩張圖可見,云器Lakehouse在10秒調度間隔下做到和Flink持平,在30秒或調至1小時的準實時調度間隔,性能的節省可以達到百倍甚至千倍。

上述測試表明,云器Lakehouse在流處理場景上,比Flink有10x-1000x的資源消耗節省。并且,基于增量計算在“流”和“批”兩個極端場景中間,讓數據新鮮度和處理成本可以被精益平衡;讓用戶既可以獲得“流”的實時性,又可以得到“批”的低成本。

總結

針對當前主流數據架構的痛點和挑戰,云器科技提出通過增量計算的方式,統一流、批、交互三種計算模式,實現了Single-Engine的架構,覆蓋數據不可能三角,給用戶提供靈活的多種性能成本平衡點,并超越當前主流引擎的性能。此外,云器Lakehouse在湖倉架構上做到開放并實現All data技術理念,一體化的湖倉平臺能夠同時支持BI和AI的Workload。基于一體化架構,云器提出AI4D的新方向,通過AI的方式更好地優化平臺效率。(注:AI4D領域另有專題技術白皮書論述)

 

圖13: 總結,云器科技基于增量計算打造一體化平臺的最佳實踐

關鍵字:計算一體化平臺科技

原創文章 企業網D1Net

x Single Engine + All Data :云器科技推出基于“增量計算”的一體化湖倉平臺 掃一掃
分享本文到朋友圈
當前位置:新聞中心行業相關 → 正文

Single Engine + All Data :云器科技推出基于“增量計算”的一體化湖倉平臺

責任編輯:yang |來源:企業網D1Net  2023-10-17 15:17:52 原創文章 企業網D1Net

數據平臺領域發展20年,逐漸成為每個企業的基礎設施。作為一個進入“普惠期”的領域,當下的架構已經完美了嗎,主要問題和挑戰是什么?在2023年AI躍變式爆發的大背景下,數據平臺又該如何演進,以適應未來的數據使用場景?

本文將從上述問題的出發,盤點和整理技術演進的趨勢,并提出一體化架構將是下一代技術趨勢的方向。新架構通過創新的“增量計算”范式來統一數據分析中流、批、交互不同的計算形式,通過“湖倉一體”統一存儲形態,真正實現一體化Kappa架構。同時,新架構以湖倉存儲為基礎,具備開放性和擴展性,能夠對接支撐AI,具備進一步迭代和擴展能力。

大數據發展20年發展歷史概述

大數據是從 2003 年開始發展的,其標志性的開端是《MapReduce: Simplified Data Processing on Large Clusters》、《The Google File System》、《Bigtable: A Distributed Storage System for Structured Data》三篇論文的發表,作為大數據發展的起點,發展至今恰好20年。這20年我們可以將其概括為3 個階段:孕育期、發展期和普惠期。

第一階段-孕育期:2003 年~ 2010 年,谷歌為支持搜索業務奠基大數據領域,以論文的形式公開架構和技術細節;Yahoo開源其搜索后端的數據處理技術,并命名為Hadoop。

第二階段-發展期:2010年~2020 年,兩個關鍵事項有力地推動了大數據的發展:1)以 Hadoop 為核心的開源技術,即開源分布式大數據平臺的繁榮發展;2)是云計算技術,極大程度上降低了大數據平臺的建設門檻。當下主流的大數據平臺大都在 2012 年前后開始發展,比如 AWS Redshift 是云上數倉的典型代表;包括Snowflake的成立,阿里云與飛天大數據平臺起步等;

第三階段-普惠期:從2020年至未來的10年,我們認為是大數據的普惠期。為什么這樣講,普惠期有兩個特點,其一是業務進入收獲期:我們能看到千帆競發后,大部分企業被淘汰,少數企業通過競爭最終占領市場,并逐步形成規模,例如Snowflake 2020年上市;其二從技術角度來看,部分成熟場景下技術開始迭代式發展,如“批計算”、“流計算”和部分“交互分析”技術成熟后不斷被后來者挑戰;同時,場景繼續外延不斷引入的技術,如 AI 相關的技術由此外延衍生出來,呈現出對其他領域的輻射作用。目前我們能看到這幾個特征同時具備。

當下數據平臺的典型架構和主要痛點

當前典型的數據平臺架構是計算部分采用Lamdba架構,存儲層由數據湖或者數據倉庫構建。AI等基礎設施尚在發展成熟中。

以下通過三個不同場景數據架構的實例,總結當前數據平臺的典型架構:

    

我們將當前數據平臺簡化為如下典型架構圖,其中“不變”的部分用黑底來表示,“變”的部分用灰底來表示,如圖下可見。

 

圖4: 當前數據平臺典型架構圖(簡化版)

數據源

? 不變的部分(標準場景):
?        關系型數據庫:通過 CDC 等方式采集結構化數據。
?        操作類日志:通過 APP 或是 Webservice 采集的海量日志。

? 變化發展中的兩類(新場景):
?        IoT、智能設備數據:在物聯網普及之前,大多數據都是用人的行為數據。隨IoT類技術發展,設備的數據會逐步成為另外一個主要的數據來源。
?        半結構化和非結構化數據:隨著 AI 能力的增強,這部分數據開始被加速地采集上來。

數據處理

? 不變的部分(標準場景):
?        數據分析引擎分為“批處理”、“流計算”、“實時分析”,也都有各自比較固定的數據處理和分析的場景,通過組合的方式滿足不同業務需求,這個架構通常稱之為Lambda架構。
?        數據存儲架構分為“數據倉庫”與“數據湖”,二者都不算新概念,使用場景也比較固定,大多數企業選擇其一。例如hadoop體系就是一種典型的數據湖架構。

? 變化發展中的部分(新場景):
?        AI相關的場景和架構還在發展中,場景差異大,尚未標準化。而最近火熱發展的LLM又帶來額外的變化:部分企業會選擇,由一個特征工程開始到 Training 到 Serving 的端到端的 Pipeline;另一部分企業不再做特別多的 AI 訓練,而是在 Huggingface 上下載一些已有模型 ,只做基礎的 AI 處理。

“典型的/不變的”結構化數據架構(Lambda)仍然過于復雜

綜合上述,總結市面上大部分數據平臺通常會選用組裝式的Lambda架構,而其需要多個API接口與多種數據組件,數據冗余度高,開發維護復雜度高。面向未來,我們認為結構化數據處理分析的趨勢會是,由一個一體化的引擎,統一“流”、“批”和“交互分析”,進而提供統一接口、統一處理邏輯,提供多種優化指標的高覆蓋度和靈活調整的能力。

 

圖5: 數據分析架構圖,一種典型的Lamdba架構

Lambda組裝式架構普遍存在的三點問題:

1. 引擎數據語義均不統一,帶來極高的開發和維護人力成本。三種引擎各自獨立,查詢語言、數據語義均不統一,數據在三種引擎間流轉,開發和維護成本高。有統計數據表明用于運維這些系統的人力成本與資源成本相當。

2. 異構存儲,多套元數據,帶來大量的計算和存儲冗余和管理成本。三種引擎各自獨立但又相互關聯,為了做到局部語義統一,帶來大量的顯性、隱形的計算冗余。同時三種引擎通常配置各自獨立的存儲,帶來大量的數據冗余和數據同步的成本。湖和倉采用外表關聯,缺乏統一管理。統計這些計算和存儲冗余帶來數倍的成本負擔。

3. 缺乏滿足業務變化的靈活性。三種引擎開發運維獨立,且系統設計的優化方向不同。當用戶業務需要調整三個引擎間的配置(重新調整數據新鮮度、性能和成本的平衡點),就需要復雜的修改和重復開發。通常統計當前數據架構一旦固定下來調整的周期在 3 個月以上,難以適應靈活多變的業務發展。

但要解決這些問題,統一成一體化架構,并非數據架構師們不想,而是確有幾處難點,后文有詳細論述。

發展中的/變化的” AI 新計算范式,傳統數倉架構不能滿足,需要新架構的支持

AI給數據平臺帶來新的挑戰:AI需要更豐富的數據,數據需要更多樣的BI+AI應用。Data與AI的關系不再是Data+AI,而是Data*AI ——數據平臺不再是一對一的計算和存儲架構,而是 m 對 n 關系的架構,這樣的架構改變變化下,我們應該思考的問題是,由單點優化思路建設起來的lambda架構,能否迎接AI的挑戰,如果不能,改變的方向是什么?

 

圖6: 從1對1的數倉架構,到M對N的多元異構開放架構

關系型數據庫自 1970 年誕生,到 2010 年的 40 年時間里,都是采用傳統的數倉架構(如上圖左側)面對結構化的數據處理和分析,所以存儲系統的優化都是基于結構化數據的存儲來進行的,最終迭代出來的標準化SQL引擎,也是為了做結構化數據的分析。

而最近十年,特別是隨著深度學習技術的發展,ML/AI 拓寬了數據平臺需處理的數據類型,底層引擎模式隨之改變:

? 改變一,引擎以往只能處理結構化數據二維表,現在可以通過 AI 處理包括 test 、json 在內的半結構化數據,以及處理非結構化數據(音視圖數據);

? 改變二,引擎模式的頂層計算架構也在改變,類似生成式AI對文本和數據的直接理解和解讀,類似code interpreter通過理解數據語意做大模型的插件式、多語言融合式查詢分析,是除SQL的二維關系表達和分析引擎外,將AI的計算能力納入到引擎。

未來已來,面對AI帶來的改變,我們認為數據平臺的架構更應有兼具一體化與開放性的設計。開放式湖倉一體架構,是面向Data+AI融合場景的新趨勢。

一種面向未來的新數據平臺架構概述

如上所述,我們認為能夠面向未來的下一代數據平臺,是一體化的、開放、支持Data+AI的湖倉平臺,架構設計上:

? 數據存儲部分,由湖倉一體架構承接Data+AI的統一數據底盤;
?        數據引擎部分,打破Lambda架構限制,一個引擎完成多個場景;
?        面向AI部分,在湖倉一體底盤之上向上迭代,同時與下層存儲及數據分析引擎,做融合計算。比如我們可以有SQL和Python的融合計算,通過這種方式實現一個面向未來的存儲架構。

 

圖7:新一代數據平臺架構,基于統一分析引擎,統一湖倉一體存儲

從組裝式(Lambda)架構到一體化引擎難點在哪里?

組裝式 Lambda 架構存在的問題是業界普遍有深刻體感的,也有很多技術/產品試圖解決Lamdba架構的問題,但都不是很成功,為什么實現“一體化”的架構那么難?這主要有兩個原因:批、流、交互計算的計算形態不同,優化方向也不同。

 

圖8: 批、流、交互三種計算形態的差異

一、有不同的計算形態

將數據狀態分靜態數據與動態數據兩類。所謂靜態數據就是當 Query 下發的一瞬間,計算是在數據的一個版本(稱為 snapshot)上進行;而動態數據是指在持續變化中的數據,由數據主動驅動計算。數據 Query 也可分成靜態 Query 和動態 Query 兩類。所謂靜態 Query 的意思是像天報表或者小時報表一樣,我們知道它在某一個時間點上會發生。動態Query是指,用戶動態下發的,很難被預測。

由以上兩個維度,可以劃分出四個象限區間,可以看出批處理、流計算、交互式分析分屬不同象限:批處理是典型的靜態數據加靜態 Query 的流程,通常是一個 Pipeline 過程;交互分析是靜態數據加動態Query,高并發低延遲;批處理和交互分析,通常是計算向數據去,是主動計算處理被動數據的過程。流計算是動態數據加靜態計算的過程,當 Plan 發起之后,就一直等待數據進入,是一個主動數據驅動被動計算的過程。

二、有不同的優化方向

上圖三角為數據平臺不可能三角,即一個平臺不可能同時實現數據新鮮度、低成本和高性能三個目標。如流計算優化的是數據的新鮮度,引擎等數據,為了使得下一條數據進來時計算的足夠快,引擎是一直拉起的狀態,Reserve了大量資源。實時數倉系統是面向性能的,也需要等待數據,需要一個非常快的數據。批處理計算面向的是 Throughput ,即 Latency 延遲,能夠提供很高的 Throughput,帶來很低的 Cost。不同的優化方向使得三個引擎也不同。

Lambda架構流行的核心原因是,流、批和交互計算,剛好覆蓋了此三角,三個不同的引擎,每一個引擎的優化方向剛好是在一個角上。通過組合的方式滿足不同業務的需求。下圖更細節地比較批處理、流計算、交互式的異同。

 

表1: 批、流、交互三種計算形態的差異

上圖從6個不同角度對比,在此僅選兩個例子具體展開:

對比流計算和批計算的存儲系統:

批處理的存儲是通用存儲,采用數倉分層建模的方式,數據的中間表格可以被共享,可以被其他查詢優化。

而流計算是單獨的內置存儲,不可被共享,僅面向該計算模式優化;其中流計算兩個作業之間的存儲也不同,通常用Kafka做,是純粹增量化的存儲,且僅支持某一段時間的查詢,不能做全量數據Query。

所以存儲模式的不同和計算模式的不同,使得流和批都很難統一彼此。

對比批處理和交互計算的調度模型和資源模型:

批處理通常選擇Bulk Synchronous Parallel(BSP)調度模型,是一種逐層調度模式。批處理通常作業下發后,動態向Yarn/Kubernetes申請資源,具有極佳的資源使用效率,能夠降低成本。缺點是會造成資源排隊。

而交互分析為了更好的性能,通常采用Massive Parallel Processing(MPP)調度模型,資源需要保持預置,數據被靜態劃分好,面向低延遲和高性能優化,但有很高的成本。

調度/資源模型的不同使得批處理和實時分析引擎也很難統一。

綜上可以看出由于流、批、交互三種計算引擎的計算模型、數據驅動方式、存儲系統設計、調度系統設計、資源模型等均不相同,都很難覆蓋另外兩個的場景,他們三者本身難以完成統一計算模式。

“增量計算”統一批、流、交互三種計算模式

鑒于流、批、交互三種計算模式都不能完成模式的統一,我們提出第四種計算模式:增量計算。

增量計算定義:指的是將所有計算抽象成增量的形態,實現數據的一次計算、累次使用,節省計算資源,同時能提供靈活調整的“增量時間間隔”,達成批處理或者流處理效果。因增量方式顯著降低資源使用,也能大幅提升交互分析的性能并降低延遲。

 

圖9:通過增量計算的方式,實現批、流、交互三種計算模式的統一

增量計算的原理:

如左圖所示,x軸時間軸代表T0、T1和T2,當Query下發時,T0動態生成Plan,基于當前最優數據和計算情況,在T0數據里得到結果集ResultSet T0;當在T1時間下發同一個Query時,該Query的計算不再從0開始,而是在T0結果集的基礎上,結合T0到T1這一階段的數據,融合起來做增量計算,得到ResultSet T1,同時在為T2計算做狀態準備。

針對批處理,可以將其作為當T0為0,從T0到T1的增量計算模式的特例,是一種從頭開始的增量計算。在最佳實踐里,用戶通常不再保持按天的批處理,而是降低調度間隔來達成更好的近實時性。

針對流計算,流計算是天然的增量計算模型,可以通過縮短T0與T1中間間隔的時間來達成。

針對交互分析,與批處理類似,交互分析也可以抽象為增量化形態,并且更簡單,因為沒有后續,所以不需要再為下一階段計算做準備。同時,因為部分交互分析的數據是持續寫入的,部分之前的計算結果也可以被后來的作業利用,大幅降低計算量。

調度增量計算的時間間隔,是由用戶根據需要調整設定的。當把調度時間間隔調整的很短,例如調整為分鐘或者秒級,整個計算模式就愈接近流計算,而如果把間隔調整天,計算模式就等同于批處理。也就是說,計算模式的改變,只需要調整調度就能實現!

總結,增量計算模式有幾點優勢:


       第一,統一計算模式,進而能夠統一引擎,從根本上解決Lambda的痛點。

第二,每次Query在下發的時候,可以根據T0、T1中間的時間間隔做動態Plan,找到其中最優Plan的調節流程。能夠實現數據平臺不可能三角的平衡點,基于數據新鮮度、性能、成本的動態平衡,靈活地在三者之間找到多種多樣的平衡。

第三,結果集ResultSet均公開可用,能夠支持所有其他引擎或者平臺使用,更符合數倉建模設計邏輯,也更具開放性。

基于“增量計算”實現一體化Lakehouse數據平臺

增量計算可以解決計算模式的統一,即流、批、交互為一體;但對于數據平臺整體架構而言,還需要統一存儲和面向AI的能力,因此云器科技以增量計算為基礎,提出Single-Engine的數據平臺設計理念。

 

圖10:基于增量計算實現一體化Lakehouse數據平臺

基于增量計算數據計算新范式,云器科技實現了Single-Engine一體化平臺,包含如下三部分:

1. 用增量計算模式統一流、批和交互三種計算形態。

2. 用通用增量存儲的統一存儲形態。在湖倉存儲架構的基礎上增加了通用增量存儲,使得在湖倉之上能夠做增量的表達,該存儲需要做到以下三點:

• 實現大通用的存儲,是可以適應面向寫入Throughput和查詢高性能的兩個維度進行優化。

       • 數據存儲支撐兩種更新模型(Copy-on-write 與 Merge-on-read 兩種模式),通過 Compaction 達到效率和成本的平衡。

       • 實現數據的開放性,最終把數據的表達變成標準化的開源Iceberg存儲格式,使得其它的引擎或者平臺可以很方便地對接起來。

3. Share Everything架構。在ShareData架構基礎上增加了新維度,把數據、計算和資源三方拆開,使得批處理和交互分析在資源上可以做靈活調度。

至此,通過統一的計算模式、統一的增量存儲,并將數據、計算和資源Share Everything化,最終構成了云器Lakehouse的Single-Engine一體化架構。
云器Lakehouse具備以下關鍵能力:

1. 統一的接口,統一的語法/語義,統一且開放的數據表達(使得可以被其他引擎/工具消費)。數據與計算隔離,一套存儲支撐多種運算模式。

2. 提供面向數據新鮮度、查詢性能和資源成本三方面的多種平衡點(而不是面向三個頂點的極致優化)。具備多點優化能力,同時能支持三者之間的靈活調整。

3. 支持在平衡點之間做簡單靈活的調節。調整應該是簡單的,不需要修改大量代碼,不需要重新構建Pipeline。

4. 多種指標達到/超過當前主流產品的水平。通過Single-Engine在流、批、交互這三個場景上都有不遜于現在主流系統和架構的性能,甚至超越它們。

性能指標與能力衡量

云器Lakehouse作為一體化數據平臺,橫跨實時、離線、交互分析等多個場景,為了客觀地衡量數據集在不同場景下的表現,我們用業界標準的測試集在對應場景上,進行性能評估。特別的,云器Lakehouse由于采用了存算分離share-everything的系統架構,會通過限制virtual cluster(虛擬計算集群 abbr. VC)計算資源的規格來保證測試數據與其他產品的規格一致。盡管這樣的限制不利于發揮計算資源彈性伸縮的優勢,云器Lakehouse仍然在多個場景下同時表現出優異的性能,如圖11所示:

 

圖11:云器Lakehouse離線和實時分析場景性能指標

? 圖11-左1:大數據分析場景,TPC-DS 10TB是TPC發布的針對大數據系統的標準測試數據集,適合用于評估大數據處理及ETL處理過程,測試集包含對大數據集的統計、報表生成、聯機查詢、數據挖掘等復雜應用。以相同規格配置的處理時間評估,云器Lakehouse處理速度比Snowflake快30%,是Spark處理的9倍;

? 圖11-左2: 即時分析場景,TPC-H 100GB是由面向業務的臨時查詢和并發數據修改組成,適合用于對Ad-hoc臨時查詢評估。云器Lakehouse不僅在處理速度上達到了Spark 的7倍,且比Snowflake還要快4倍。

? 圖11-右1:  在實時分析場景,SSB-FLAT 100GB是以星型數據結構為主的數據測試集,適用于評估實時查詢性能,我們對比了Spark和Clickhouse,Snowflake。由于Spark是對批處理做優化的,實時分析會比較慢。而Clickhouse是專向實時分析優化的,它會更有優勢。測試結果顯示,云器Lakehouse比Clickhouse的快20%,是Snowflake的3倍。

在流計算領域,我們選取了4個典型場景做性能對比:

? Process場景:是單表下,單行的數據處理json展開的場景;

? 單流join場景:是雙表下,左表是一個固定的維表,Join右表是流動的實時表數據,這是一個標準的維表擴展場景;

? 單表聚合場景:是單表做aggregation,流動數據的聚合分析場景;

? 雙流join場景:是雙表流動數據的join場景。

 

圖12:流計算細分場景的資源消耗對比

在每個場景以Apache Flink做參照對比分析,由于Flink是一個“主動數據被動計算”的過程,會有占用資源和實際使用資源的區別。如圖12所示,每張圖的前兩個數據柱狀圖指標是flink,第一個柱子代表flink的資源占用,第二個代表flink的實際資源使用。而云器使用增量計算的模式,沒有資源占用和使用差異。6個深藍色柱子代表云器Lakehouse在不同的時間間隔的資源使用情況。

在Process場景和單流join場景(圖12-左1左2)屬于“無狀態計算”,云器基于自研的向量化引擎實現,比Flink以行式處理引擎的方式快至少10倍以上,此外可以看到無論調度間隔是10秒或間隔8小時,云器流計算資源消耗差異不大。

單表聚合場景和雙流join場景,由于要考慮歷史數據/狀態,屬于“帶歷史狀態計算”,調度間隔時間的調整會很大程度上影響計算資源的消耗,從圖12右1右2兩張圖可見,云器Lakehouse在10秒調度間隔下做到和Flink持平,在30秒或調至1小時的準實時調度間隔,性能的節省可以達到百倍甚至千倍。

上述測試表明,云器Lakehouse在流處理場景上,比Flink有10x-1000x的資源消耗節省。并且,基于增量計算在“流”和“批”兩個極端場景中間,讓數據新鮮度和處理成本可以被精益平衡;讓用戶既可以獲得“流”的實時性,又可以得到“批”的低成本。

總結

針對當前主流數據架構的痛點和挑戰,云器科技提出通過增量計算的方式,統一流、批、交互三種計算模式,實現了Single-Engine的架構,覆蓋數據不可能三角,給用戶提供靈活的多種性能成本平衡點,并超越當前主流引擎的性能。此外,云器Lakehouse在湖倉架構上做到開放并實現All data技術理念,一體化的湖倉平臺能夠同時支持BI和AI的Workload。基于一體化架構,云器提出AI4D的新方向,通過AI的方式更好地優化平臺效率。(注:AI4D領域另有專題技術白皮書論述)

 

圖13: 總結,云器科技基于增量計算打造一體化平臺的最佳實踐

關鍵字:計算一體化平臺科技

原創文章 企業網D1Net

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 吴堡县| 雷山县| 巨野县| 珲春市| 大同市| 旌德县| 炎陵县| 鄂托克旗| 观塘区| 谢通门县| 兴安县| 中牟县| 承德县| 广安市| 稷山县| 仁怀市| 外汇| 武清区| 海宁市| 阿克陶县| 昌平区| 凌源市| 观塘区| 嵩明县| 平南县| 绥芬河市| 无为县| 天津市| 镇坪县| 隆回县| 四平市| 石家庄市| 临泽县| 东源县| 南皮县| 桐城市| 阜宁县| 新绛县| 香港 | 祁连县| 雷波县|