資料倉儲 資料湖 流批一體,終於有大神講清楚了!

2021-10-06 03:30:49 字數 3028 閱讀 5389

摘要:資料倉儲,資料湖,包括flink社群提的流批一體,它們到底能解決什麼問題?今天將由阿里雲研究員從解決業務問題出發,將問題抽絲剝繭,從技術維度娓娓道來:為什麼你需要資料湖或者資料倉儲解決方案?它的核心難點與核心問題在哪?如果想穩定落地,系統設計該怎麼做?

那麼怎麼辦呢?

針對市面上這些開源產品,就儲存而言,我們來逐一分析,這些產品是否都能具備滿足業務需求的能力。

首先是基於離線儲存的hive,其次是提供點查詢能力的hbase、cassandra、然後是mpp架構號稱能面向htap的greenplum、以及最新興起的用於做快速分析的clickhouse等等都是基於解決方案而面世的儲存產品。

但以上的每個儲存產品都是乙個資料的孤島,比如為了解決點查詢的問題,資料需要在hbase裡面儲存乙份;為了解決列存的快速分析,資料需要在druid或者clickhouse裡面存乙份;為了解決離線計算又需要在hive裡面儲存乙份,這樣帶來的問題就是:

1)冗餘儲存

資料將會儲存在多個系統中,增加冗餘存粗。

2)高維護成本

每個系統的資料格式不一致,資料需要做轉換,增加維護成本,尤其是當業務到達一定量級時,維護成本劇增。

3)高學習成本

多個系統之前需要完全打通,不同的產品有不同的開發方式,尤其是針對新人來說,需要投入更多的精力去學習多種系統,增加學習成本。

面對這樣乙個無比冗餘無比複雜的系統,我們應該怎麼去解決這些問題呢?我們可以對lambda架構做乙個簡化。其實業務的本質就是將資料來源做乙個實時處理或者離線處理(批處理),從業務場景出發,我們希望不管是實時資料還是離線資料,都能統一儲存在乙個儲存系統裡面,而且這個儲存還必須要滿足各種各樣的業務需求。這樣聽起來很玄乎,感覺這個產品需要支援各種各種的場景,非常複雜。但是如果我們能把架構做成這樣,將會非常完美,這樣就從本質上解決了流批統一的計算問題,一套sql既能做流計算又能做批計算,再深挖其底層原理,還解決了儲存問題,流資料和批資料都統一儲存在同乙個產品。

針對以上簡化的架構,我們可以看看開源社群為了解決這些問題所推出的一些產品,例如data lakes。

首先採集的資料有統一的儲存,不管是hdfs、oss還是aws,資料以增量的形式儲存在資料湖裡,再通過查詢層不管是hive、spark還是flink,根據業務需求選擇乙個產品來做查詢,這樣實時資料以及離線資料都能直接查詢。整個架構看起來很美好,但是實際問題在於:

1)資料增量寫入不滿足實時性

開源的實時寫入並不是實時寫入,而是增量寫入。實時和增量的區別在於,實時寫一條資料就能立馬查詢可見,但是增量為了提高吞吐會將資料一批一批的寫入。那麼這套方案就不能完全滿足資料實時性的要求。

2)查詢的qps

我們希望這個架構既能做實時分析,又能做流計算的維表查詢,儲存裡面的資料能否通過flink做乙個高併發的查詢,例如每秒鐘支援上千萬上億qps的查詢?

3)查詢的併發度

整個方案本質都是離線計算引擎,只能支援較低的併發,如果要支援每秒鐘上千的併發,需要耗費大量的資源,增加成本。

綜上所述,這個方案目前還不能完全解決問題,只能作為乙個初期的解決方案。

針對以上問題我們做了乙個細緻的分析,大致根據查詢併發度要求或者查詢latency要求,將patterns分為四類:

目前市面上都在說htap,經過我們調研htap是個偽命題,因為a和t的優化方向不一樣。為了做t,寫入鏈路將非常複雜,qps無法滿足需求。若是對t的要求降低一點,就會發現analytical和severing的聯絡非常緊密,這兩塊的技術是可以共用的,所以我們放棄了t就相當於放棄了transaction,於是我們提出新的乙個架構叫做hsap,那我們需要做的就是把提供服務和分析的資料儲存在乙個系統裡,通過一套分析引擎做處理。

1)豐富的工具對接

postgresql具有非常完備的工具對接,不管是開發工具還是bi分析工具,都有著豐富的支撐能力。

2)詳盡的文件支撐

通常來講寫文件需要耗費大量的時間,postgresql有著非常詳盡的文件,如果能夠直接復用postgresql的文件,將會減少工作量。同時開發者們只需要根據postgresql文件來開發,減少學習成本。

3)多元化的擴充套件

postgresql有著非常多元化的擴充套件,例如地理資訊的postgis,matlab等,開發者們可以根據業務需求選擇對應的擴充套件。

基於以上所有內容,進入到我們今天的重點主題,也就是我們在阿里雲重磅發布的新一代實時互動式引擎,中文名叫互動式分析,英文名叫hologres。hologres這個名字怎麼來的呢?hologres由holographic(全息宇宙)和postgres組成。

hologres的架構比較簡單,從下往上看,最底層是統一的儲存系統,可以是阿里雲統一的pangu、業務的hdfs或者oss、s3等,儲存上面是計算層,提供類似的mmp架構計算服務,再往上是fe層,根據查詢資訊將plan分發到各個計算節點,再往上就是postgresql生態的對接,只要有jdbc/odbc driver就能對hologres做查詢。

1)儲存計算分離

hologres的架構是完全是儲存計算分離,計算完全部署在k8s上,儲存可以使用共享儲存,可以根據業務需求選擇hdfs或者雲上的oss,這樣使用者就能根據業務需求對資源做彈性擴縮容,完美解決資源不夠帶來的併發問題。

2)儲存優勢

3)計算優勢

資料倉儲應用(一) 資料倉儲模型設計

關聯文章 資料倉儲應用 二 資料抽取 轉換 載入 etl 資料倉儲應用 三 sql server 2005的資料倉儲應用 聯機分析olap 一 問題背景 某電子商務 主要銷售電子類產品,產品又分為幾個大類別,包括 電腦類 手機類 鍵盤類等,每個類別內又細分為幾個小類別,各類別下又有諸多的商品,每乙個...

資料倉儲 Hive 一

英文名稱為data warehouse,可簡寫為dw或dwh。資料倉儲的目的是構建面向分析的整合化資料環境,為企業提供決策支援 decision support 資料倉儲是存資料的,企業的各種資料往裡面存,主要目的是為了分析有效資料,後續會基於它產出供分析挖掘的資料,或者資料應用需要的資料,如企業的...

資料倉儲學習筆記一

資料倉儲是乙個面向主題的 整合的 非易失的且隨時間變化的資料集合,用來支援管 理人員的決策。1 主題 圖1傳統的操作型系統是圍繞公司的應用進行組織的。對乙個保險公司來說,應用問題可能 是汽車保險 健康保險 人壽保險與意外 保險。公司的主要主題範圍可能是顧客 保險 單 保險費與索賠。2 整合 圖2 資...