自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

國產開源湖倉LakeSoul--數(shù)據(jù)智能的未來方向

開源 大數(shù)據(jù)
數(shù)元靈科技專注于一站式湖倉智能平臺新基建,在研項目包括云原生湖倉一體框架,分布式訓練引擎和算法框架,高性能數(shù)據(jù)、模型在線服務,以及云原生一站式AI開發(fā)生產平臺。LakeSoul 作為國產自研開源湖倉框架,具備湖倉一體、流批一體、BI/AI 一體等核心設計理念和實現(xiàn),在并發(fā)讀寫和 IO 性能等方面有著顯著的優(yōu)勢。

一、LakeSoul 設計理念和技術原理解讀

首先和大家分享 LakeSoul 的設計理念。

1、LakeSoul 設計理念解析——背景

圖片

圖:LakeSoul 設計理念解析——背景

Modern Data Stack,簡稱 MDS,中文翻譯為現(xiàn)代數(shù)據(jù)棧,其特點之一就是數(shù)據(jù)上云,以云數(shù)據(jù)倉庫為核心。同時數(shù)倉采用計算和存儲分離的模式,計算資源可以彈性伸縮,滿足負載波峰波谷的變化,降低成本;存儲資源可以線性擴大,高可用,無容量限制。

  • 湖倉:在數(shù)據(jù)湖基礎設施上構建數(shù)倉融合湖、倉各自的優(yōu)勢,湖倉一體能發(fā)揮出數(shù)據(jù)湖的靈活性與生態(tài)豐富性,以及數(shù)據(jù)倉庫的成熟性與企業(yè)級能力,幫助企業(yè)建立數(shù)據(jù)資產、實現(xiàn)數(shù)據(jù)業(yè)務化、進而推進全線業(yè)務智能化,實現(xiàn)數(shù)據(jù)驅動下的企業(yè)數(shù)據(jù)智能創(chuàng)新,全面支撐企業(yè)未來大規(guī)模業(yè)務智能落地。
  • ELT:由 ETL 向 ELT 轉變,實時自動化數(shù)據(jù)集成,增量式數(shù)據(jù)建模計算和查詢。
  • 流批一體:流批統(tǒng)一計算鏈路、統(tǒng)一存儲,統(tǒng)一數(shù)據(jù)鏈路,支持并發(fā)寫、Upsert、ACID、快照讀等功能。
  • 多元應用:BI/AI 一體化,多種計算模式、多種計算引擎直接讀取數(shù)據(jù),統(tǒng)一數(shù)據(jù)架構和口徑。

2、LakeSoul設計理念解析——設計目標

圖片

圖:LakeSoul 設計理念解析——設計目標

LakeSoul 的設計目標包括四部分,湖倉一體、流批一體、端到端實時以及 BI/AI 一體。

  • 湖倉一體:針對計算存儲分離優(yōu)化設計,在湖上低成本構建大規(guī)模數(shù)倉。
  • 流批一體:管理大規(guī)模的數(shù)據(jù)湖文件,支持高并發(fā)大批量的寫入、Upsert 更新,快照讀、回滾等機制。
  • 端到端實時:提供多源自動實時數(shù)據(jù)入湖(CDC、Kafka),實時增量計算 Pipeline等功能,打造端到端簡單易用的實時數(shù)倉。
  • BI/AI 一體:支持大數(shù)據(jù)、AI 模型訓練多種計算框架,使用湖倉統(tǒng)一數(shù)據(jù)口徑。

3、LakeSoul 設計理念解析——時間線

圖片

圖:LakeSoul 設計理念解析——時間線

LakeSoul 時間線起源于大型推薦和廣告業(yè)務實時數(shù)據(jù)流場景,分五個階段:

  • 2021.12前:LakeSoul 國產自研流批一體湖倉框架開源。
  • 2021.12至2022.07:重構元數(shù)據(jù),提升并發(fā)更新和事務能力。
  • 2022.07至2022.10:發(fā)布 Flink CDC 多表自動入湖,支持整庫同步,自動 DDL變更。
  • 2022.10至2023.05:發(fā)布 Native IO,擴大性能領先優(yōu)勢。LakeSoul 項目捐贈給 Linux 基金會孵化。
  • 2023.05至2023.6:發(fā)布全鏈路流式增量計算,自動合并等領先功能通過國產信創(chuàng)認證。

4、LakeSoul 技術解析——整體架構

圖片

圖:LakeSoul 技術解析——整體架構

LakeSoul 的整體架構如上圖所示。包括三層,底層 LakeSoul Storage Layer 表示數(shù)據(jù)存儲層,中間 LakeSoul Query Engine 表示數(shù)據(jù)查詢引擎,最上層 LakeSoul Distributed Meta Service 表示分布式元數(shù)據(jù)服務,左面是數(shù)據(jù)源,右面是加載數(shù)據(jù)和數(shù)據(jù)服務。

  • LakeSoul Storage Layer:數(shù)據(jù)存儲層,支持的存儲包括 Amazon S3、HDFS、MINIO、阿里云OSS 等,通過 Cloud Storage Driver、Hot Data cache 加載數(shù)據(jù)到數(shù)據(jù)存儲層。
  • LakeSoul Query Engine:支持多種計算引擎包括 Spark、Flink、Hive 等,讀取存儲層數(shù)據(jù)進行加工、分析、建模等。
  • LakeSoul Distributed Meta Service:分布式元數(shù)據(jù)服務,包括元數(shù)據(jù)管理-Schema Manage、數(shù)據(jù)事務管理-ACID Control、數(shù)據(jù)分布/狀態(tài)-Data Distrbution/Stats 等功能。
  • 數(shù)據(jù)源:包括流數(shù)據(jù)-Streaming Data 和批數(shù)據(jù)-Batch Data。
  • 數(shù)據(jù)服務:數(shù)據(jù)服務包括BI和AI兩塊,支持AI使用結構化和非結構化數(shù)據(jù)。

5、LakeSoul 技術解析——數(shù)據(jù)格式

圖片

圖:LakeSoul 技術解析——數(shù)據(jù)格式

下面看一下 LakeSoul 的數(shù)據(jù)格式。

  • 表物理數(shù)據(jù)組織:使用 Parquet 格式存儲;按主鍵哈希分片,單個文件內按主鍵排序;支持多級 Range 分區(qū)。
  • 表元數(shù)據(jù)組織:支持表、分區(qū)、文件多級管理。每次提交會產生一個新的版本 Version,每次提交版本號會遞增。

6、LakeSoul 技術解析——元數(shù)據(jù)(元數(shù)據(jù)管理)

圖片

圖:LakeSoul 技術解析——元數(shù)據(jù)(元數(shù)據(jù)管理)

元數(shù)據(jù),主要包括分區(qū)信息表 Partition_info、數(shù)據(jù)提交信息表 Data_commit_info、表信息表 Table_info、表名 ID 信息表 Table_name_id 和表路徑 ID 信息表 Table_path_id 等。

中心化的元數(shù)據(jù)管理包括以下內容:

  • 使用 PostgreSQL 作為存儲:PostgreSQL 是開源的對象-關系數(shù)據(jù)庫數(shù)據(jù)庫管理系統(tǒng),支持豐富的數(shù)據(jù)類型(如 JSON 和 JSONB 類型、數(shù)組類型)和自定義類型。
  • 使用 PG 事務實現(xiàn)并發(fā)控制、ACID 等能力
  • 使用 PG 兩階段提交協(xié)議用于數(shù)據(jù)并發(fā)讀寫時沖突檢測
  • 使用 PG Trigger 機制實現(xiàn)事件訂閱,用于觸發(fā)自動 Compaction 等

7、LakeSoul 技術解析——元數(shù)據(jù)(兩階段提交協(xié)議)

圖片

圖:LakeSoul 技術解析——元數(shù)據(jù)(兩階段提交協(xié)議)

元數(shù)據(jù)的兩階段提交協(xié)議,在 Spark/Flink 流/批作業(yè)寫數(shù)據(jù)時執(zhí)行,發(fā)生沖突時會進行重試或者失敗等。

8、LakeSoul 技術解析——元數(shù)據(jù)(自動并發(fā)沖突解決機制)

圖片

圖:LakeSoul 技術解析——元數(shù)據(jù)(自動并發(fā)沖突解決機制)

細分作業(yè)寫入時數(shù)據(jù)提交類型,不同類型之間沖突時會采取如下幾種措施:

  • 直接重試提交:兼容的寫沖突(Append、Merge)
  • 重新排列 Commit:Compaction、Update 的部分情況
  • 不兼容沖突:并發(fā)全量 Update 等,提交失敗

9、LakeSoul 技術解析——元數(shù)據(jù)(自動演進和快照管理)

圖片

圖:LakeSoul 技術解析——元數(shù)據(jù)(自動演進和快照管理)

LakeSoul 還提供了 Schema 自動演進和快照管理的能力。

Schema 自動演進:

  • 在寫時自動處理 Schema 變更。
  • 允許并發(fā)進行變更,不需要停作業(yè)再執(zhí)行 DDL。
  • 讀數(shù)據(jù)自動兼容,讀數(shù)據(jù)自動兼容包括新增加列:舊數(shù)據(jù)自動補充 null;刪除列:舊數(shù)據(jù)自動過濾該列;提升類型精度:舊數(shù)據(jù)自動執(zhí)行 Upcast。

元數(shù)據(jù)快照管理:

  • 快照讀、快照回滾、快照清理
  • 默認讀取最新的快照

10、LakeSoul 技術解析——Native IO(設計理念和設計原理)

圖片

圖:LakeSoul 技術解析——Native IO(設計理念和設計原理)

Native IO 的設計主要考慮了以下方面:

  • Upsert、MOR 讀寫的封裝:包括屏蔽讀寫實現(xiàn)細節(jié),與計算引擎無關 ;向上提供簡潔的 Writer、Reader 接口。
  • 多引擎對接:包括方便對接各類 SQL、AI 引擎;支持向量化計算引擎;C、Java、Python 多語言支持。
  • 高性能:包括針對對象存儲讀寫優(yōu)化;嚴格的內存占用控制。
  • 實現(xiàn)原理如下:
  • 基于 Rust、Apache Arrow-rs 和 DataFusion 實現(xiàn)異步 Writer、Reader:包括使用 Parquet 作為存儲格式;Writer:主鍵排序(支持磁盤 spill)、異步并發(fā)Multipart upload;Reader:異步 Parquet RowGroup Prefetch、MOR 主鍵有序歸并。
  • 封裝 C Interface。
  • 通過 jnr-ffi/ctypes 進一步封裝 Java、Python 接口。

11、LakeSoul 技術解析——Native IO(性能對比)

圖片

圖:LakeSoul 技術解析——Native IO(性能對比)

上圖是 Spark 讀寫 AWS S3的性能對比??梢钥吹剑?/span>

  • Spark 讀 AWS S3 讀性能 Parquet Scan 對比:Native IO 遠高于 Parquet-mr。
  • Spark 讀 AWS S3 寫性能 Parquet Write 對比:Native IO 高于 Parquet-mr。

測試報告鏈接https://github.com/meta-soul/LakeSoul/tree/main/lakesoul-spark/src/test/scala/org/apache/spark/sql/lakesoul/benchmark/io

二、LakeSoul 核心功能和優(yōu)勢

接下來介紹 LakeSoul 的核心功能和優(yōu)勢。

1、LakeSoul 核心功能——入湖

圖片

圖:LakeSoul 核心功能——入湖

首先要介紹的核心功能是入湖。LakeSoul 流批一體表存儲系統(tǒng)由 Spark 湖倉表、Flink 湖倉表、Schema 自動演進、計算與存儲彈性擴容、并發(fā)寫入更新等功能模塊組成。其中 Spark湖倉表模塊實現(xiàn)了使用 Spark SQL 語句創(chuàng)建湖倉表、向表中插入數(shù)據(jù)、更新表中已有數(shù)據(jù)、讀取湖倉中的表、讀取表的歷史快照、回滾到表的歷史版本等功能;Flink湖倉表模塊實現(xiàn)了使用 Flink SQL 語句創(chuàng)建湖倉表、向表中插入數(shù)據(jù)、批量讀取湖倉表、流式全量讀取湖倉表、流式增量讀取湖倉表等功能;Schema 自動演進模塊實現(xiàn)了 Schema 變更時自動兼容讀取表的舊數(shù)據(jù)等功能;被測系統(tǒng)支持計算與存儲能力的彈性擴容;支持對同一個表的同一個分區(qū)進行并發(fā)寫入更新。

多源數(shù)據(jù)實時入湖包括以下能力:

  • 數(shù)據(jù)庫多表實時入湖、Kafka 多 topic 實時入湖。
  • 支持 Flink CDC、Debezium 等多種 CDC 采集工具。
  • 自動發(fā)現(xiàn)新表、自動 DDL 變更。
  • 精確一次(Exactly Once):消息不會丟失,也不會被重復發(fā)送。

2、LakeSoul 核心功能——增量計算

圖片

圖:LakeSoul 核心功能——增量計算

第二個核心功能是增量計算,LakeSoul 表在 CDC 讀寫時具有以下特性:

  • 讀寫均兼容 Flink Changelog Stream。
  • 增量讀取 CDC 流。
  • 全量讀取合并后數(shù)據(jù)。

3、 LakeSoul 核心功能——多流拼接

圖片

圖:LakeSoul 核心功能——多流拼接

第三個是多流拼接,原生支持多流并發(fā)寫入拼接。

  • 多個流可以是異構的,只要有相同主鍵列即可。
  • 其余列可以不同。
  • 消除 Join 計算,降低延遲,減少資源消耗。

4、LakeSoul 核心功能——權限和血緣

圖片

圖:LakeSoul 核心功能——權限和血緣

第四是權限和血緣方面的功能。權限方面,實現(xiàn)了通用的 RBAC 的權限控制功能,用到了 PG 數(shù)據(jù)庫本身的 RBAC 和行級別安全策略的功能。為了實現(xiàn)細粒度的表級別的權限控制,還用到了 Casbin。綜合這些功能點,實現(xiàn)了較為完善的權限控制,并且對各引擎都是統(tǒng)一的。

數(shù)據(jù)血緣功能,采用了開源的 OpenLineage 協(xié)議來上報血緣關系。

5、LakeSoul 核心功能——自動維護

圖片

圖:LakeSoul 核心功能——自動維護

第五是自動維護功能。自動維護包括自動全局 Compaction 服務,以及自動清理過期數(shù)據(jù)服務。

使用 PostgreSQL 的 Trigger 功能實現(xiàn)了如下功能:

  • 達到 Compaction /清理條件時觸發(fā)事件。
  • 使用 Spark 作業(yè)監(jiān)聽事件并執(zhí)行 Compaction /清理操作。
  • Spark 作業(yè)可以彈性伸縮。

6、LakeSoul 核心功能——性能評測

圖片

圖:LakeSoul 性能評測

上圖中展示了性能評測的一些數(shù)據(jù),分別以 Hudi、Iceberg、LakeSoul 三種產品進行寫 Write、讀 Read 測試。測試時提供兩種類型的表:寫時復制(Copy on Write,COW)表和讀時合并(Merge On Read,MOR)表,對于 Copy-On-Write Table,用戶的 update 會重寫數(shù)據(jù)所在的文件,所以是一個寫放大很高,但是讀放大為 0,適合寫少讀多的場景。對于 Merge-On-Read Table,整體的結構有點像 LSM-Tree,用戶的寫入先寫入到 delta data 中,這部分數(shù)據(jù)使用行存,這部分 delta data 可以手動 merge 到存量文件中,整理為 parquet 的列存結構。

測試代碼和數(shù)據(jù)如下:

  • https://github.com/meta-soul/ccf-bdci2022-datalake-contest-examples/tree/mor。
  • https://github.com/meta-soul/ccf-bdci2022-datalake-contest-examples/tree/cow。

測試方式如下:

  • 第一批插入1000萬行數(shù)據(jù)。
  • 分10次插入100萬行數(shù)據(jù)
  • MOR讀取時沒有執(zhí)行過Compaction。

測試結論為:

S3云對象存儲數(shù)據(jù)讀取:讀取 1000 萬行數(shù)據(jù),執(zhí)行三次,平均讀取時間 17.770秒,讀性能相比 Spark 3.3.2 提升 1.722 倍;

S3 云對象存儲數(shù)據(jù)寫入:寫入 1000 萬行數(shù)據(jù),執(zhí)行三次,平均寫入時間 43.194 秒,寫性能相比 Spark 3.3.2 提升 1.800倍;

Merge on Read 場景下數(shù)據(jù)讀取:讀取 2000 萬行數(shù)據(jù),執(zhí)行三次,平均讀取時間 25.811 秒,讀性能相比 Iceberg 1.1.0提升 1.420倍,相比 Hudi 0.12.2 提升 2.541倍;

Merge on Read 場景下數(shù)據(jù)寫入:寫入 2000 萬行數(shù)據(jù),執(zhí)行三次,平均寫入時間 266.628 秒,寫性能相比 Iceberg 1.1.0提升 5.832 倍,相比 Hudi 0.12.2 提升 12.209 倍。

三、LakeSoul 應用場景和案例

接下來分享 LakeSoul 的一些應用場景和案例。

1、LakeSoul 應用場景——構建實時湖倉

圖片

圖:LakeSoul 應用場景——構建實時湖倉

構建完整的實時湖倉一體鏈路包括:

  • 多源數(shù)據(jù)實時入湖
  • 全量、增量一體化分析
  • 實時增量計算
  • BI、AI 多種上層應用

2、LakeSoul 應用場景——實時機器學習

圖片

圖:LakeSoul 應用場景——實時機器學習

構建實時機器學習樣本包括:

  • 使用 LakeSoul 多流拼接功能
  • 將多個特征流、標簽流實時拼接
  • 將樣本流式傳入機器學習訓練,實現(xiàn)在線學習

四、LakeSoul 開源社區(qū)進展和未來規(guī)劃

最后介紹一下 LakeSoul 開源社區(qū)進展和未來規(guī)劃。

1、LakeSoul 開源社區(qū)

圖片

圖:LakeSoul 開源社區(qū)

LakeSoul 于2021年底開源,采用 Apache License 2.0協(xié)議,成為國內首個開源湖倉框架。2023年5月將項目捐贈給 Linux 基金會,在 Linux Foundation AI & Data 基金會技術委員會答辯會議上,我們介紹了 LakeSoul 開源項目,得到了在場技術委員們的一致高度評價,成功通過投票,正式成為 Linux 基金會的孵化項目。成為 Linux Foundation AI & Data 旗下 Sandbox 項目。

未來 LakeSoul 項目將在 Linux 基金會的指引下,秉承開源、開放、協(xié)作的理念,全面建設發(fā)展 LakeSoul 開源社區(qū)。數(shù)元靈公司也將一如既往地全力支持 LakeSoul 開源項目和社區(qū),持續(xù)貢獻核心功能和特性。在這里,我們也真誠邀請廣大開發(fā)者和用戶參與到社區(qū)中來,共同打造新一代湖倉一體開源框架。

https://github.com/lakesoul-io/LakeSoul。

2、LakeSoul 未來演進方向

圖片

圖:LakeSoul 未來演進方向

隨著 LakeSoul 新版本的發(fā)布,進入 Linux 基金會孵化和通過國產信創(chuàng)認證,LakeSoul 項目的發(fā)展揭開了新的篇章。LakeSoul 近期還將陸續(xù)推出一系列更新:在功能方面,將會增加內置角色權限控制、數(shù)據(jù)質量校驗等功能點,進一步完善數(shù)倉能力;在生態(tài)方面,將會推出原生 Python 讀取接口并與多種 AI 框架對接,成為 AI 大模型的新一代數(shù)據(jù)底座。

未來 LakeSoul 將繼續(xù)圍繞功能、生態(tài)和性能這三方面進行迭代。

功能方面:

  • 數(shù)據(jù)質量規(guī)則自動化校驗
  • 原生 Python Reader
  • Hadoop/K8s 自動化部署

生態(tài)方面:

  • 支持更多數(shù)據(jù)庫入湖
  • Kafka Connect Sink
  • LogStash Sink
  • Presto Connector

性能方面:

  • 提升 MOR 性能
  • Minor compaction
  • 支持引擎向量化計算
  • 本地緩存
責任編輯:姜華 來源: DataFunTalk
相關推薦

2024-09-11 14:47:00

2017-04-06 13:58:42

數(shù)據(jù)湖大數(shù)據(jù)數(shù)據(jù)管理

2017-03-20 09:33:21

數(shù)據(jù)湖智能

2021-05-28 09:23:07

數(shù)據(jù)倉庫數(shù)據(jù)湖

2023-12-13 07:26:24

數(shù)據(jù)湖倉數(shù)據(jù)倉庫性能

2023-10-13 07:25:50

2025-03-28 01:33:00

2014-09-29 10:56:37

智能科技

2023-09-11 07:13:19

人工智能物聯(lián)網(wǎng)

2021-06-07 10:45:16

大數(shù)據(jù)數(shù)據(jù)倉庫數(shù)據(jù)湖

2011-03-17 17:06:38

數(shù)據(jù)庫發(fā)展方向

2024-08-21 13:40:15

2021-06-21 09:26:46

人工智能AI

2020-12-02 17:20:58

數(shù)據(jù)倉庫阿里云數(shù)據(jù)湖

2024-08-27 09:12:36

2023-05-26 06:45:08

2022-12-13 17:42:47

Arctic存儲湖倉
點贊
收藏

51CTO技術棧公眾號