DUICUO

国産オープンソースレイクウェアハウス「LakeSoul」は、データインテリジェンスの未来の方向性を象徴しています。

I. LakeSoulの設計哲学と技術原理の説明

まず、LakeSoul の設計哲学についてお話ししたいと思います。

1. LakeSoulの設計コンセプト分析 – 背景

画像: LakeSoul デザインコンセプト分析 – 背景

Modern Data Stack (MDS) は、クラウドデータウェアハウスを中核とするクラウドベースのデータ移行を特徴としています。データウェアハウスはコンピューティングとストレージを分離したモデルを採用しており、コンピューティングリソースを弾力的に拡張することで、ピーク時とオフピーク時の負荷に対応し、コストを削減します。一方、ストレージリソースは線形に拡張できるため、高可用性と無制限の容量を確保できます。

  • Lakewarehouse:データレイク基盤上にデータウェアハウスを構築することで、レイクとウェアハウスの両方の利点を統合できます。Lakewarehouseの統合により、データレイクの柔軟性と豊富な機能に加え、データウェアハウスの成熟度とエンタープライズレベルの機能を最大限に活用できます。これにより、企業はデータ資産を構築し、データのビジネス化を実現し、あらゆる事業ラインのインテリジェント化を推進できます。これにより、データ主導のエンタープライズデータインテリジェンスイノベーションを実現し、将来のビジネスオペレーションにおける大規模なインテリジェント実装を全面的にサポートできます。
  • ELT: ETL から ELT への移行により、リアルタイムの自動データ統合、増分データ モデリング、計算、クエリが可能になります。
  • 統合ストリームおよびバッチ処理: ストリームとバッチ処理の両方に対応する統合コンピューティング リンク、統合ストレージ、統合データ リンク。同時書き込み、Upsert、ACID、スナップショット読み取りなどの機能をサポートします。
  • 多様なアプリケーション: 直接データ読み取り用の複数のコンピューティング モードとエンジン、および統一されたデータ アーキテクチャと標準を備えた統合 BI/AI。

2. LakeSoulの設計コンセプト分析 - 設計目標

画像: LakeSoul デザインコンセプト分析 – デザイン目標

LakeSoul の設計目標には、レイク ウェアハウス統合、フロー バッチ統合、エンドツーエンドのリアルタイム統合、BI/AI 統合の 4 つの部分が含まれます。

  • レイク ウェアハウスの統合: コンピューティングとストレージを分離するように最適化されており、レイク上に大規模なデータ ウェアハウスを低コストで構築できます。
  • 統合されたストリームとバッチ処理: 大規模なデータ レイク ファイルを管理し、高同時実行性、大容量書き込み、Upsert 更新、スナップショット読み取り、ロールバックなどのメカニズムをサポートします。
  • エンドツーエンドのリアルタイム: データ ウェアハウス (CDC、Kafka) へのマルチソースの自動リアルタイム データ取り込み、リアルタイム増分計算パイプラインなどの機能を提供し、エンドツーエンドでシンプルで使いやすいリアルタイム データ ウェアハウスを作成します。
  • BI/AI 統合: ビッグ データと AI モデルのトレーニング用の複数のコンピューティング フレームワークをサポートし、Lakeware を使用してデータ標準を統一します。

3. LakeSoul 設計コンセプト分析 – タイムライン

画像: LakeSoul デザインコンセプト分析 - タイムライン

LakeSoul のタイムラインは、大規模なレコメンデーションおよび広告ビジネスのリアルタイム データ ストリームから生まれたもので、次の 5 つの段階に分けられます。

  • 2021年12月まで:LakeSoulが国産開発した統合バッチ処理レイクウェアハウスフレームワークがオープンソース化されます。
  • 2021 年 12 月から 2022 年 7 月: メタデータを再構築して、同時更新とトランザクション機能を改善します。
  • 2022 年 7 月から 2022 年 10 月: 完全なデータベース同期と自動 DDL 変更をサポートする、レイクへの複数テーブルの自動インポート用の Flink CDC をリリースしました。
  • 2022年10月から2023年5月:Native IOをリリースし、パフォーマンスのリードを拡大。LakeSoulプロジェクトはLinux Foundationに寄贈され、インキュベーションが行われました。
  • 2023年5月~2023年6月:フルリンクストリーミング増分コンピューティング、自動マージなどの先進機能をリリースし、国内の情報技術イノベーション認証に合格。

4. LakeSoulのテクニカル分析 – 全体的なアーキテクチャ

画像: LakeSoul 技術分析 - 全体アーキテクチャ

LakeSoul の全体的なアーキテクチャは、上の図に示されています。3 つのレイヤーで構成されています。最下層の LakeSoul ストレージレイヤーはデータストレージレイヤー、中間層の LakeSoul クエリエンジンはデータクエリエンジン、最上層の LakeSoul 分散メタサービスは分散メタデータサービスを表しています。左側はデータソース、右側はデータ読み込みとデータサービスです。

  • LakeSoul ストレージ層:データストレージ層は、Amazon S3、HDFS、MINIO、Alibaba Cloud OSSなどのストレージシステムをサポートします。データは、Cloud Storage DriverとHot Data Cacheを介してデータストレージ層にロードされます。
  • LakeSoul クエリ エンジン: Spark、Flink、Hive などの複数のコンピューティング エンジンをサポートし、ストレージ層からデータを読み取り、処理、分析、モデリングなどを行います。
  • LakeSoul 分散メタ サービス: メタデータ管理 (スキーマ管理)、データ トランザクション管理 (ACID 制御)、およびデータ配布/ステータス (データ配布/統計) 機能を含む分散メタデータ サービス。
  • データ ソースには、ストリーミング データとバッチ データが含まれます。
  • データ サービスには BI と AI の 2 つの部分が含まれており、AI が構造化データと非構造化データを使用することをサポートします。

5. LakeSoulテクニカル分析 – データ形式

画像: LakeSoul テクニカル分析 - データ形式

LakeSoul のデータ形式を見てみましょう。

  • テーブルの物理データ構成: Parquet 形式を使用して保存され、主キー ハッシュによって分割され、単一ファイル内で主キーによってソートされ、複数レベルの範囲パーティション分割をサポートします。
  • テーブルメタデータの構成:テーブル、パーティション、ファイルのマルチレベル管理をサポートします。コミットごとに新しいバージョンが生成され、バージョン番号はコミットごとに増加します。

6. LakeSoul テクニカル分析 – メタデータ(メタデータ管理)

画像: LakeSoul テクニカル分析 – メタデータ (メタデータ管理)

メタデータには、主にパーティション情報テーブル Partition_info、データコミット情報テーブル Data_commit_info、テーブル情報テーブル Table_info、テーブル名 ID 情報テーブル Table_name_id、テーブルパス ID 情報テーブル Table_path_id などが含まれます。

集中メタデータ管理には次のものが含まれます。

  • PostgreSQL をストレージとして使用: PostgreSQL は、豊富なデータ型 (JSON 型、JSONB 型、配列型など) とカスタム型をサポートするオープンソースのオブジェクトリレーショナル データベース管理システムです。
  • PG トランザクションを使用して、同時実行制御、ACID、およびその他の機能を実装します。
  • 同時データ読み取りおよび書き込み操作中の競合検出に PG 2 フェーズ コミット プロトコルを使用します。
  • PG トリガー メカニズムは、自動圧縮などをトリガーするために使用されるイベント サブスクリプションを実装するために使用されます。

7. LakeSoul テクニカル分析 – メタデータ(2相コミットプロトコル)

画像: LakeSoul 技術分析 - メタデータ (2 フェーズ コミット プロトコル)

メタデータの 2 フェーズ コミット プロトコルは、Spark/Flink ストリーミング/バッチ ジョブがデータを書き込むときに実行され、競合が発生した場合は再試行されるか失敗します。

8. LakeSoul 技術分析 – メタデータ(自動同時実行競合解決メカニズム)

画像: LakeSoul 技術分析 – メタデータ (自動同時実行競合解決メカニズム)

ジョブ書き込み時のデータ送信タイプは分類されており、異なるタイプ間で競合が発生した場合には以下の対策が取られます。

  • コミットを直接再試行する: 互換性のある書き込み競合 (追加、マージ)
  • コミットのいくつかのケースを並べ替える: 圧縮と更新
  • 非互換性/競合: 同時完全更新など、コミットの失敗。

9. LakeSoulテクノロジー分析 - メタデータ(自動進化とスナップショット管理)

画像: LakeSoul テクニカル分析 – メタデータ (自動進化とスナップショット管理)

LakeSoul は、自動スキーマ進化とスナップショット管理の機能も提供します。

自動スキーマ進化:

  • 書き込み中にスキーマの変更を自動的に処理します。
  • DDL を実行するためにジョブを停止することなく、同時変更が許可されます。
  • 自動データ読み取り互換性には、新しい列の追加 (古いデータに null 値を自動的に入力)、列の削除 (その列の古いデータを自動的にフィルター処理)、型精度の向上 (古いデータに対してアップキャストを自動的に実行) が含まれます。

メタデータ スナップショット管理:

  • スナップショットの読み取り、スナップショットのロールバック、スナップショットのクリーンアップ
  • デフォルトでは、最新のスナップショットが読み取られます。

10. LakeSoul テクノロジー分析 – ネイティブ IO (設計コンセプトと設計原則)

画像: LakeSoul 技術分析 - ネイティブ IO (設計コンセプトと設計原則)

ネイティブ IO の設計では、主に次の側面を考慮します。

  • Upsert および MOR 読み取り/書き込みカプセル化: これには、読み取り/書き込み実装の詳細をシールドしてコンピューティング エンジンから独立させること、および簡潔な Writer および Reader インターフェイスを提供することが含まれます。
  • マルチエンジン統合: さまざまな SQL および AI エンジンとの簡単な統合、ベクトル化されたコンピューティング エンジンのサポート、C、Java、Python などの複数の言語のサポートが含まれます。
  • 高いパフォーマンス: オブジェクト ストレージの読み取りと書き込みの最適化、厳密なメモリ使用量の制御など。
  • 実装原則は次のとおりです。
  • Rust、Apache Arrow-rs、および DataFusion に基づいて非同期の Writer と Reader を実装します。これには、ストレージ形式として Parquet を使用することが含まれます。Writer: 主キーのソート (ディスク スピルをサポート) と非同期の同時マルチパート アップロード。Reader: 非同期の Parquet RowGroup プリフェッチと MOR 主キー順序付けマージ。
  • C インターフェースをカプセル化します。
  • Java および Python インターフェースは、jnr-ffi/ctypes を通じてさらにカプセル化されます。

11. LakeSoul テクノロジー分析 – ネイティブ IO (パフォーマンス比較)

画像: LakeSoul 技術分析 – ネイティブ IO (パフォーマンス比較)

上の画像は、Spark による AWS S3 の読み取りと書き込みのパフォーマンスを比較したものです。ご覧のとおり、

  • Parquet Scan と比較した AWS S3 での Spark 読み取りパフォーマンス: ネイティブ IO は Parquet-mr よりも大幅に優れています。
  • Spark 読み取り AWS S3 書き込みパフォーマンスと Parquet 書き込みのパフォーマンスの比較: ネイティブ IO は Parquet-mr よりも優れています。

テストレポートリンク: https://github.com/meta-soul/LakeSoul/tree/main/lakesoul-spark/src/test/scala/org/apache/spark/sql/lakesoul/benchmark/io

II. LakeSoulのコア機能と利点

次に、LakeSoul のコア機能と利点を紹介します。

1. LakeSoulのコア機能 – 湖に入る

画像: LakeSoul のコア機能 - 湖に入る

最初に紹介するコア機能は、レイクの取り込みです。LakeSoul 統合ストリーミングおよびバッチ テーブル ストレージ システムは、Spark レイク ウェアハウス テーブル、Flink レイク ウェアハウス テーブル、自動スキーマ進化、コンピューティングとストレージの弾力的なスケーリング、同時書き込み更新などの機能モジュールで構成されています。Spark レイク ウェアハウス テーブル モジュールは、Spark SQL ステートメントを使用したレイク ウェアハウス テーブルの作成、テーブルへのデータの挿入、テーブル内の既存データの更新、レイク ウェアハウスからのテーブルの読み取り、テーブルの履歴スナップショットの読み取り、テーブルの履歴バージョンへのロールバックなどの機能を実装します。Flink レイク ウェアハウス テーブル モジュールは、Flink SQL ステートメントを使用したレイク ウェアハウス テーブルの作成、テーブルへのデータの挿入、レイク ウェアハウス テーブルのバッチ読み取り、レイク ウェアハウス テーブルの完全読み取りのストリーミング、レイク ウェアハウス テーブルの増分読み取りのストリーミングなどの機能を実装します。自動スキーマ進化モジュールは、スキーマの変更が発生したときにテーブル内の古いデータの読み取りとの互換性を自動的に確保するなどの機能を実装します。テストされたシステムは、コンピューティングとストレージ機能の弾力的なスケーリングをサポートし、同じテーブルの同じパーティションへの同時書き込み更新をサポートします。

複数のソースのデータをリアルタイムでレイクに取り込む機能には、次の機能が含まれます。

  • データベースからの複数のテーブルと、Kafka データベースからの複数のトピックのリアルタイム取り込み。
  • Flink CDC や Debezium などの複数の CDC データ取得ツールをサポートします。
  • 新しいテーブルを自動的に検出し、DDL 変更を自動的に実行します。
  • 正確に 1 回: メッセージは失われたり、繰り返し送信されたりすることはありません。

2. LakeSoulコア機能 – 増分計算

画像: LakeSoul コア機能 - 増分計算

2つ目のコア機能は増分計算です。LakeSoulテーブルは、CDCによる読み取りおよび書き込み時に以下の特性を持ちます。

  • 読み取りと書き込みの両方が Flink Changelog Stream と互換性があります。
  • CDC ストリームの増分読み取り。
  • すべての結合されたデータを読み取ります。

3. LakeSoulのコア機能 - マルチストリームスプライシング

画像: LakeSoul のコア機能 - マルチストリームスプライシング

3 つ目は、マルチストリーム スプライシングです。これは、複数のストリームの同時書き込みとスプライシングをネイティブにサポートします。

  • 同じ主キー列を持つ限り、複数のストリームが異種であっても構いません。
  • 残りの列は異なる場合があります。
  • 結合計算を排除し、待ち時間を短縮し、リソースの消費を減らします。

4. LakeSoul コア機能 – 権限と系統

画像: LakeSoul コア機能 – 権限と系統

4つ目に、権限と系統に関する機能があります。権限に関しては、PGデータベース独自のRBACと行レベルセキュリティポリシーを活用した、一般的なRBAC権限制御機能を実装しています。また、きめ細かなテーブルレベルの権限制御には、Casbinも利用しています。これらの機能を組み合わせることで、比較的包括的な権限制御システムが実装され、様々なエンジン間で一貫性が保たれています。

データ系統機能は、オープンソースの OpenLineage プロトコルを使用して系統関係を報告します。

5. LakeSoulコア機能 - 自動メンテナンス

画像: LakeSoul コア機能 - 自動メンテナンス

5つ目は自動メンテナンス機能です。自動メンテナンスには、自動グローバルコンパクションサービスと期限切れデータの自動クリーンアップサービスが含まれます。

PostgreSQL のトリガー機能を使用して、次の機能が実装されました。

  • 圧縮/クリーンアップ条件が満たされると、イベントがトリガーされます。
  • Spark ジョブを使用してイベントをリッスンし、圧縮/クリーンアップ操作を実行します。
  • Spark ジョブはスケールアップおよびスケールダウンできます。

6. LakeSoulコア機能 - パフォーマンス評価

画像: LakeSoul パフォーマンスレビュー

上の画像は、Hudi、Iceberg、LakeSoul製品を使用して行われた書き込みおよび読み取りテストのパフォーマンスベンチマークデータを示しています。テストには、Copy-on-Write(COW)テーブルとMerge-on-Read(MOR)テーブルの2種類のテーブルが提供されました。Copy-on-Writeテーブルの場合、ユーザーによる更新によってデータを含むファイルが書き換えられるため、書き込み増幅は大きくなりますが、読み取り増幅はゼロになります。これは、書き込みが少なく読み取りが多いシナリオに適しています。Merge-on-Readテーブルの場合、全体的な構造はLSMツリーに似ています。ユーザーによる書き込みは、まず行ベースのストレージを使用する差分データに書き込まれます。この差分データは、既存のファイルに手動でマージし、Parquetの列指向ストレージ構造に再編成することができます。

テストコードとデータは次のとおりです。

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

テスト方法は次のとおりです。

  • 最初のバッチである 1,000 万行のデータが挿入されました。
  • 100 万行のデータを 10 個の個別のステップで挿入します。
  • MOR 読み取り中に圧縮は実行されませんでした。

テストの結論は次のとおりです。

S3 クラウド オブジェクト ストレージ データの読み取り: 1,000 万行のデータを 3 回読み取り、平均読み取り時間は 17.770 秒で、Spark 3.3.2 と比較して読み取りパフォーマンスが 1.722 倍向上しました。

S3 クラウド オブジェクト ストレージのデータ書き込み: 1,000 万行のデータの書き込みを 3 回実行したところ、平均書き込み時間は 43.194 秒で、Spark 3.3.2 と比較して書き込みパフォーマンスが 1.800 倍向上しました。

Merge on Readシナリオにおけるデータ読み取り:2,000万行のデータを3回読み取り、平均読み取り時間は25.811秒でした。読み取りパフォーマンスはIceberg 1.1.0の1.420倍、Hudi 0.12.2の2.541倍向上しました。

Merge on Readシナリオでは、2,000万行のデータを3回実行して書き込んだ場合、平均書き込み時間は266.628秒でした。書き込みパフォーマンスは、Iceberg 1.1.0の5.832倍、Hudi 0.12.2の12.209倍向上しました。

III. LakeSoulの適用シナリオと事例

次に、LakeSoul の適用シナリオと事例をいくつか紹介します。

1. LakeSoul アプリケーションシナリオ – リアルタイム Lake ウェアハウスの構築

画像: LakeSoul アプリケーションシナリオ – リアルタイム Lake ウェアハウスの構築

完全なリアルタイム レイク ウェアハウス統合チェーンの構築には次のものが含まれます。

  • 複数のソースデータをレイクにリアルタイムで入力
  • 完全データと増分データの統合分析
  • リアルタイム増分計算
  • BI、AI、その他の上位アプリケーション

2. LakeSoulの応用シナリオ – リアルタイム機械学習

画像: LakeSoul アプリケーションシナリオ - リアルタイム機械学習

リアルタイム機械学習サンプルの構築には以下が含まれます。

  • LakeSoulのマルチストリームスプライシング機能を使用する
  • 複数の特徴ストリームとラベルストリームのリアルタイムスプライシング
  • サンプルを機械学習トレーニングにストリーミングすることで、オンライン学習が可能になります。

IV. LakeSoulオープンソースコミュニティの進捗と今後の計画

最後に、LakeSoul オープンソース コミュニティの進捗状況と今後の計画についてご紹介します。

1. LakeSoulオープンソースコミュニティ

画像: LakeSoul オープンソースコミュニティ

LakeSoulは2021年末にApache License 2.0の下でオープンソース化され、中国初のオープンソースLakeリポジトリフレームワークとなりました。2023年5月にはLinux Foundationに寄贈されました。Linux Foundation AI & Data技術委員会の発表会でLakeSoulオープンソースプロジェクトを紹介したところ、出席した技術委員会メンバーから満場一致で高い評価を受け、投票も無事通過し、正式にLinux FoundationインキュベーションプロジェクトおよびLinux Foundation AI & Data傘下のサンドボックスプロジェクトとなりました。

今後、LakeSoulプロジェクトはLinux Foundationの指導の下、オープンソース、オープン性、そしてコラボレーションの原則を堅持し、LakeSoulオープンソースコミュニティを包括的に構築・発展させていきます。ShuyuanlingはLakeSoulオープンソースプロジェクトとコミュニティを全面的にサポートし、コア機能と機能への貢献を継続的に行っていきます。開発者とユーザーの皆様には、コミュニティへのご参加を心よりお待ちしております。Lakeリポジトリ統合型の次世代オープンソースフレームワークを共に構築してまいります。

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

2. LakeSoulの今後の進化の方向性

画像:LakeSoulの今後の進化方向

LakeSoul新バージョンのリリース、Linux Foundationインキュベーションプログラムへの参加、そして国内ITイノベーションプラットフォームとしての認定により、LakeSoulプロジェクトは新たな章に入りました。LakeSoulは近日中に一連のアップデートをリリースする予定です。機能面では、ロールベースのアクセス制御とデータ品質検証機能を組み込み、データウェアハウス機能をさらに向上させます。エコシステム面では、ネイティブPython読み取りインターフェースの提供と様々なAIフレームワークとの連携により、大規模AIモデルのための次世代データ基盤を目指します。

今後も LakeSoul は、機能性、エコシステム、パフォーマンスという 3 つの側面を中心に改良を続けていきます。

機能性:

  • データ品質ルールの自動検証
  • ネイティブ Python リーダー
  • Hadoop/Kubernetesの自動デプロイメント

生態学的側面:

  • レイクに追加されるデータベースをさらにサポート
  • Kafka コネクトシンク
  • LogStashシンク
  • プレストコネクタ

パフォーマンス面では:

  • MORパフォーマンスの向上
  • 軽度の圧縮
  • ベクトル化計算エンジンのサポート
  • ローカルキャッシュ