天天看點

湖倉一體資料平台架構

随着數字化技術的更新疊代,資料庫、資料倉庫、資料湖等各種概念層出不窮,MPP資料庫、Hadoop、對象存儲、Hudi等各種資料技術不斷湧現,湖倉一體概念逐漸被人們所關注,在國際知名機構Gartner釋出的《Hype Cycle for Data Management

2021》中,湖倉一體被正式納入到技術成熟度曲線中。最近有很多朋友都在講湖倉一體架構,那究竟什麼是湖倉一體?本期金子就和大家聊聊湖倉一體的資料平台架構!

01 資料湖與資料倉庫

​資料倉庫是一個面向主題的、內建的、相對穩定的、反映曆史變化的資料存儲系統,它主要存儲的是結構化資料,曆史資料通過抽取、轉換、整合以及清理,并導入到目标表中,主要用于業務決策分析。随着目前大量資訊化發展和電子裝置産品普及,産生大量的照片、視訊、文檔等非結構化資料,人們也想通過大資料技術找到這些資料的關系,是以設計了一個比資料倉庫還要大的系統,可以把非結構化和結構化資料共同存儲和做一些處理,這個系統叫做資料湖。資料湖是一個以原始格式存儲資料的存儲庫或系統,它按原樣存儲資料,而無需事先對資料進行結構化處理,可以存儲結構化資料(如關系型資料庫中的表),半結構化資料(如CSV、日志、XML、JSON),非結構化資料(如電子郵件、文檔、PDF)和二進制資料(如圖檔、音頻、視訊),以供機器學習、深度學習、統計分析等多種形式資料分析應用。資料湖開放的資料存儲結構給資料入湖帶來了更大的靈活性,各種結構化、半結構化、非結構化的原始資料可以直接入湖。另外,開放存儲給上層的計算引擎也帶來了更多的靈活度,各種計算引擎需要遵循相當寬松的相容性約定即可根據自己針對的場景随意讀寫資料湖中的資料。而資料倉庫則更關注資料使用效率、資料的安全性和資料治理能力,這對企業的長遠的成長性發展至關重要。

02 湖倉一體概念

​湖倉一體是一種新型開放式架構,将資料湖和資料倉庫的優勢充分結合,它建構在資料湖低成本的資料存儲架構之上,又繼承了資料倉庫的資料處理和管理功能。湖倉一體打通資料湖和資料倉庫兩套體系,讓資料和計算在湖和倉之間自由流動,更能發揮出資料湖的靈活性,以及資料資料倉庫的成長性。但是湖倉一體≠資料湖+資料倉庫,湖倉一體不等同于資料湖和資料倉簡單打通,湖倉一體的建構需要解決以下三個關鍵問題:

  1. 湖和倉的資料/中繼資料在不需要使用者人工幹預的情況下,可以無縫打通、自由順暢地流動;
  2. 系統根據特定的規則自動地将資料在湖倉之間進行緩存和移動,根據規則自動決定哪些資料放在數倉,哪些保留在資料湖,進而形成一體化;
  3. 湖和倉有統一的開發體驗,存儲在不同系統的資料,可以通過一個統一的開發/管理平台操作。

03 湖倉一體平台架構

​基于開源生态的主流湖倉一體解決方案采用存儲計算分離的架構,對象存儲(OSS/S3/MinIO等)和Hadoop HDFS提供支援Apache hudi、Apache Iceberg等資料湖的資料存儲機制,并通過Flink、Spark、Trino(原Presto)三個不同引擎進行相關資料處理和互動式查詢,對外提供不同類型的服務。湖倉一體具體平台架構如下:

湖倉一體資料平台架構

資料存儲​

​資料存儲支援OSS/S3/MinIO等對象存儲和Hadoop HDFS,對象存儲存儲非結構化、原始資料、冷資料,提供高成本效益,HDFS存儲結構化資料,提供高性能存儲。使用Hudi/Iceberg作為資料存儲中間層,能夠基于HDFS、對象存儲等底層存儲,支援ACID語義、實作快速更新能力。通過Alluxio進行資料緩存,加速Spark、Flink、Trino(原Presto)等計算引擎對資料湖的讀寫。

計算引擎

​計算支援多引擎,Spark、Trino、Flink等均實作serverless化,跑在Kubernetes中,即開即用,滿足不同查詢場景,并通過Yarn進行統一資源通路/排程

智能中繼資料

基于特定的規則,智能識别結構化、半結構化檔案的中繼資料,建構資料目錄,并轉化成内置存儲中的一個Hive表,統一進行中繼資料管理,提供類HiveMeta API針對不同計算引擎通路底層資料。

統一程式設計模型

Apache Beam作為統一的程式設計模型,提供統一的IDE,統一流和批,抽象出統一的API接口,并且生成的資料處理任務應該能夠在各個計算引擎上執行,使得使用者可以自由切換資料處理任務的執行引擎與執行環境。

湖倉一體資料平台架構

金子說資料

繼續閱讀