2023年4月7日,由中國DBA聯盟(ACDU)和墨天輪社群聯合主辦的第十二屆『資料技術嘉年華』(DTC 2023) 在北京新雲南皇冠假日酒店盛大開啟。HashData資深解決方案架構師李俊在4月8號專題會場6-“融合應用:湖倉技術創新”上發表了《基於HashData的湖倉一體解決方案的探索與實踐》的專題演講。本文根據演講實錄整理而成,演講正文如下(全文閱讀需要20分鐘以上):
一、湖倉一體的演進
資料倉儲的概念是比爾·恩門(Bill Inmon)在1991年出版的《Building the Data Warehouse》一書正式提出後被廣泛接受。經過30年發展,在金融、通訊、航空等各行各業都是有廣泛應用。資料倉儲具有便於BI和報表系統接入,資料管控能力強的優勢,但是隨著大資料的興起,表現出不支援非結構化資料、專有系統成本高,專有資料格式、靈活度低的劣勢。
資料湖的概念興起於大資料的出現,是在2010年左右,它具備儲存成本較低、支援非結構化資料。資料湖一度被認為會取代資料倉儲,但是隨著資料湖投入實際應用中,人們逐步發現到它的一些劣勢:對BI系統的支援不足、查詢效能低、資料互動不實時、可靠性差等問題。在資料湖與資料倉儲之間學術界、工業界發生過激烈的爭辯,最後基本達成共識:資料倉儲與資料湖就像蘋果與橙子,它們是完全不同的東西,不會相互取代。
資料倉儲和資料湖不會相互取代,它們會共存,共同組成企業的資料平臺。Gartner提出的邏輯資料倉儲概念就包括了資料倉儲和資料湖兩個部分,這也是目前大多數企業的一個現狀。
但是創新者並不滿足於現狀,在2020年左右由Databrick公司率先提出了Lakehouse的概念,在國內翻譯成湖倉一體或者湖倉。不難看出Lakehouse是前一半來源Data Lake,後一半是來源Data Warehouse。它的寓意是Lakehouse吸收資料湖和資料倉儲的優勢,建立一個新的平臺。
湖倉一體(Lakehouse)分別在資料格式、資料型別、資料訪問、可靠性、治理與安全、效能、擴充套件性、使用者場景支援提出新要求。
為了滿足上述的新要求,湖倉一體(Lakehouse)必須具備如下的關鍵能力。存算分離資料湖需要提升的關鍵能力:事務BI支援效能資料治理與安全資料倉儲需要提升的關鍵能力:多資料型別機器學習成本二、國外湖倉技術發展簡介
提到國外的湖倉技術,人們討論最多的Databrick、Hudi、Iceberg這三家開源解決方案。Databrick家解決方案是DeltaLake,我有幸參加過DeltaLake的產品培訓和試用,確實具備了事務、BI支援、效能等方面的關鍵能力,體驗很好。
Apache Hudi是DeltaLake的競爭對手。
Apache Iceberg是DeltaLake的另一個競爭對手。正是由於開源Hudi、Iceberg快速的發展,逼迫DeltaLake由商用改為開源。談到Iceberg,我們需要重點介紹一個概念:Table Format(資料表格格式),Table Format是抽象層,幫助計算引擎處理底層的儲存格式(ORC、Parquet等),而不是像以前那樣需要直接操作底層儲存。這個概念很重要,在後面的技術分享會用到。
上面提到Apahce DeltaLake/Apache Hudi/Apache Icerberg三種開源解決方案都是資料湖向資料倉儲融合的技術路線,HashData作為一個資料倉儲解決方案將向大家展開一個資料倉儲向資料湖融合的新視角。三、HashData創新與探索實踐
HashData最初的產品原型是基於Greenplum,它是一個典型的MPP架構,但是它是存算耦合的,即資料儲存、資料計算都在一個資料節點。
經過面向雲原生的反覆迭代設計後,HashData v3的架構是這樣的。它是一個服務、計算、儲存三者分離的架構,有效解決了傳統MPP的木桶效應問題,使得HashData資料倉儲具備支援超大規模的叢集能力。
HashData目前已經成功應用於C行的超大規模資料倉儲服務,截止2022年底,目前在生產中已經有2萬多個資料節點 在執行,資料儲存約13PB左右。
資料倉儲向資料湖融合另一挑戰是如何提供低成本解決方案?來自華為雲官網的資料顯示,物件儲存的成本僅僅只有磁碟、SSD的價格的幾十分之一。如果把所有的資料全部儲存在物件儲存中,整體解決方案將大幅降低。不幸的是物件儲存的IO不太好,這樣會犧牲效能。在價格和效能中間,我們採用多級儲存技術:持久化資料儲存在物件儲存中,在計算層增加熱點快取技術,很好的解決了這個問題。
採用了物件儲存的HashData資料湖解決方案整體成本可以降低到原來的1/10,但透過熱點快取技術保證了效能。相關Benchmark資料包告表明,效能非常接近原來的水平。
對於機器產生的資料比如IoT資料,HashData支援流式計算引擎準實時寫入,從而提高資料分析的實效性。
在A能源集團案例中,統一資料湖已經儲存油藏、地質、勘探、生產等資料1.7PB,當然也有上面提到的機器裝置產生的流式資料。
對於半結構化資料,現在基本上資料庫都有很好的支援,這是不重複說明了。重點在於非結構化資料,資料庫其實可以以二進位制方式儲存圖片等,但使用起來比較麻煩,這不是一個好的解決方法。對於非結構化分析,目前我們給出的解決方案是分兩部分:原始檔案儲存在物件儲存中。解析出來的結構化資料儲存於資料庫中,便於檢索比對。
下面以高速公路的卡口資料分析案例進一步說明。攝像頭抓拍車牌資訊後,將原始照片儲存到物件儲存,以做原始證據。解析出來的車牌號、顏色、時間存放到HashData資料庫,以支援流量統計監測、逃費稽核等應用。
對於機器學習,HashData支援SQL方式呼叫函式在庫內進行機器學習,現在新增支援更開放的Python的原生支援。
綜上,HashData湖倉一體解決方案是一個以服務、計算、儲存三者分離的技術架構為基石,面向多種場景,包括資料倉儲、資料湖,也包括資料要素市場等場景的解決方案。四、湖倉融合的思考與展望
湖倉融合後的會形成一個統一儲存+多計算引擎的格局。
對於資料格式的融合,HashData後續會引入Iceberg作為TableFormat。