I. LakeSoulの設計哲学と技術原理の説明まず、LakeSoul の設計哲学についてお話ししたいと思います。 1. LakeSoulの設計コンセプト分析 – 背景画像: LakeSoul デザインコンセプト分析 – 背景 Modern Data Stack (MDS) は、クラウドデータウェアハウスを中核とするクラウドベースのデータ移行を特徴としています。データウェアハウスはコンピューティングとストレージを分離したモデルを採用しており、コンピューティングリソースを弾力的に拡張することで、ピーク時とオフピーク時の負荷に対応し、コストを削減します。一方、ストレージリソースは線形に拡張できるため、高可用性と無制限の容量を確保できます。
2. LakeSoulの設計コンセプト分析 - 設計目標画像: LakeSoul デザインコンセプト分析 – デザイン目標 LakeSoul の設計目標には、レイク ウェアハウス統合、フロー バッチ統合、エンドツーエンドのリアルタイム統合、BI/AI 統合の 4 つの部分が含まれます。
3. LakeSoul 設計コンセプト分析 – タイムライン画像: LakeSoul デザインコンセプト分析 - タイムライン LakeSoul のタイムラインは、大規模なレコメンデーションおよび広告ビジネスのリアルタイム データ ストリームから生まれたもので、次の 5 つの段階に分けられます。
4. LakeSoulのテクニカル分析 – 全体的なアーキテクチャ画像: LakeSoul 技術分析 - 全体アーキテクチャ LakeSoul の全体的なアーキテクチャは、上の図に示されています。3 つのレイヤーで構成されています。最下層の LakeSoul ストレージレイヤーはデータストレージレイヤー、中間層の LakeSoul クエリエンジンはデータクエリエンジン、最上層の LakeSoul 分散メタサービスは分散メタデータサービスを表しています。左側はデータソース、右側はデータ読み込みとデータサービスです。
5. LakeSoulテクニカル分析 – データ形式画像: LakeSoul テクニカル分析 - データ形式 LakeSoul のデータ形式を見てみましょう。
6. LakeSoul テクニカル分析 – メタデータ(メタデータ管理)画像: LakeSoul テクニカル分析 – メタデータ (メタデータ管理) メタデータには、主にパーティション情報テーブル Partition_info、データコミット情報テーブル Data_commit_info、テーブル情報テーブル Table_info、テーブル名 ID 情報テーブル Table_name_id、テーブルパス ID 情報テーブル Table_path_id などが含まれます。 集中メタデータ管理には次のものが含まれます。
7. LakeSoul テクニカル分析 – メタデータ(2相コミットプロトコル)画像: LakeSoul 技術分析 - メタデータ (2 フェーズ コミット プロトコル) メタデータの 2 フェーズ コミット プロトコルは、Spark/Flink ストリーミング/バッチ ジョブがデータを書き込むときに実行され、競合が発生した場合は再試行されるか失敗します。 8. LakeSoul 技術分析 – メタデータ(自動同時実行競合解決メカニズム)画像: LakeSoul 技術分析 – メタデータ (自動同時実行競合解決メカニズム) ジョブ書き込み時のデータ送信タイプは分類されており、異なるタイプ間で競合が発生した場合には以下の対策が取られます。
9. LakeSoulテクノロジー分析 - メタデータ(自動進化とスナップショット管理)画像: LakeSoul テクニカル分析 – メタデータ (自動進化とスナップショット管理) LakeSoul は、自動スキーマ進化とスナップショット管理の機能も提供します。 自動スキーマ進化:
メタデータ スナップショット管理:
10. LakeSoul テクノロジー分析 – ネイティブ IO (設計コンセプトと設計原則)画像: LakeSoul 技術分析 - ネイティブ IO (設計コンセプトと設計原則) ネイティブ IO の設計では、主に次の側面を考慮します。
11. LakeSoul テクノロジー分析 – ネイティブ IO (パフォーマンス比較)画像: LakeSoul 技術分析 – ネイティブ IO (パフォーマンス比較) 上の画像は、Spark による AWS S3 の読み取りと書き込みのパフォーマンスを比較したものです。ご覧のとおり、
テストレポートリンク: 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 ステートメントを使用したレイク ウェアハウス テーブルの作成、テーブルへのデータの挿入、レイク ウェアハウス テーブルのバッチ読み取り、レイク ウェアハウス テーブルの完全読み取りのストリーミング、レイク ウェアハウス テーブルの増分読み取りのストリーミングなどの機能を実装します。自動スキーマ進化モジュールは、スキーマの変更が発生したときにテーブル内の古いデータの読み取りとの互換性を自動的に確保するなどの機能を実装します。テストされたシステムは、コンピューティングとストレージ機能の弾力的なスケーリングをサポートし、同じテーブルの同じパーティションへの同時書き込み更新をサポートします。 複数のソースのデータをリアルタイムでレイクに取り込む機能には、次の機能が含まれます。
2. LakeSoulコア機能 – 増分計算画像: LakeSoul コア機能 - 増分計算 2つ目のコア機能は増分計算です。LakeSoulテーブルは、CDCによる読み取りおよび書き込み時に以下の特性を持ちます。
3. LakeSoulのコア機能 - マルチストリームスプライシング画像: LakeSoul のコア機能 - マルチストリームスプライシング 3 つ目は、マルチストリーム スプライシングです。これは、複数のストリームの同時書き込みとスプライシングをネイティブにサポートします。
4. LakeSoul コア機能 – 権限と系統画像: LakeSoul コア機能 – 権限と系統 4つ目に、権限と系統に関する機能があります。権限に関しては、PGデータベース独自のRBACと行レベルセキュリティポリシーを活用した、一般的なRBAC権限制御機能を実装しています。また、きめ細かなテーブルレベルの権限制御には、Casbinも利用しています。これらの機能を組み合わせることで、比較的包括的な権限制御システムが実装され、様々なエンジン間で一貫性が保たれています。 データ系統機能は、オープンソースの OpenLineage プロトコルを使用して系統関係を報告します。 5. LakeSoulコア機能 - 自動メンテナンス画像: LakeSoul コア機能 - 自動メンテナンス 5つ目は自動メンテナンス機能です。自動メンテナンスには、自動グローバルコンパクションサービスと期限切れデータの自動クリーンアップサービスが含まれます。 PostgreSQL のトリガー機能を使用して、次の機能が実装されました。
6. LakeSoulコア機能 - パフォーマンス評価画像: LakeSoul パフォーマンスレビュー 上の画像は、Hudi、Iceberg、LakeSoul製品を使用して行われた書き込みおよび読み取りテストのパフォーマンスベンチマークデータを示しています。テストには、Copy-on-Write(COW)テーブルとMerge-on-Read(MOR)テーブルの2種類のテーブルが提供されました。Copy-on-Writeテーブルの場合、ユーザーによる更新によってデータを含むファイルが書き換えられるため、書き込み増幅は大きくなりますが、読み取り増幅はゼロになります。これは、書き込みが少なく読み取りが多いシナリオに適しています。Merge-on-Readテーブルの場合、全体的な構造はLSMツリーに似ています。ユーザーによる書き込みは、まず行ベースのストレージを使用する差分データに書き込まれます。この差分データは、既存のファイルに手動でマージし、Parquetの列指向ストレージ構造に再編成することができます。 テストコードとデータは次のとおりです。
テスト方法は次のとおりです。
テストの結論は次のとおりです。 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 ウェアハウスの構築 完全なリアルタイム レイク ウェアハウス統合チェーンの構築には次のものが含まれます。
2. 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 つの側面を中心に改良を続けていきます。 機能性:
生態学的側面:
パフォーマンス面では:
|