デルタ湖とは何ですか?

序文

この記事はコラム「ビッグデータ技術システム」に属しています。このコラムは著者によるオリジナルです。引用元を明記してください。不備や間違いはコメント欄でご指摘ください。ありがとうございます。

このコラムのディレクトリ構造と参照先については、ビッグデータ技術システムを参照してください。


バックグラウンド

データ レイクは非常に便利で便利です。データ レイクのニーズと使用法を分析しましょう。

データ レイクについては、私のブログを参照してください。データ レイクとは何ですか? データレイクが必要な理由は何ですか?

Hadoop システムとデータ レイクはよく一緒に言及されます。

データは Hadoop 分散ファイル システム (HDFS) にロードされ、分散処理アーキテクチャに基づく展開内の Hadoop クラスター内の多くのコンピューター ノードに保存されます。

ただし、データ レイクは、Hadoop ではなくクラウド オブジェクト ストレージ サービスを使用して構築されることが増えています。

一部の NoSQL データベースは、データ レイクのプラットフォームとしても使用されます。

NoSQL については、私のブログ「NoSQL とは何ですか?」を参照してください。

構造化データ、非構造化データ、および半構造化データを含む大規模なデータ セットは、多くの場合データ レイクに保存されます。

リレーショナル システム上に構築されたデータ ウェアハウスのほとんどは、この状況 (ROLAP) にはあまり適していません。

ROLAPについては、私のブログ「 OLAPの導入方法とは?」をご覧ください。

リレーショナル システムは、固定データ スキーマ (スキーマ) を必要とするため、通常、構造化されたトランザクション データのみを保存できます。

データ レイクは事前の定義を必要とせず、さまざまなスキーマをサポートします。

その結果、さまざまな種類のデータをさまざまな形式で管理できるようになりました。

Hadoop フレームワークを使用して構築されたデータ レイクには、ACID 準拠という非常に基本的な機能も欠けています。

Hive は更新機能を提供することでいくつかの制限を克服しようとしていますが、プロセス全体が面倒です。

業界のさまざまな企業が上記の問題に対してさまざまな解決策を持っていますが、Databricks (Spark の背後にある企業) は、Delta Lake という独自のソリューションを提案しています。

Delta Lake では、既存のデータ レイクでの ACID トランザクションが可能になります。

Spark、Presto、Athena、Redshift、Snowflake などの多くのビッグ データ フレームワークとシームレスに統合できます。


ここに画像の説明を挿入

Delta Lake は、既存のデータ レイク上で実行し、データ レイク上にレイク ウェアハウス アーキテクチャを構築できるオープン ソース プロジェクトであり、Apache Spark API と完全な互換性があります。

レイクと倉庫の統合については、私のブログを参照してください - Lakehouse とは何ですか?

Delta Lake は、ACID トランザクション、スケーラブルなメタデータ処理を提供し、S3、ADLS、GCS、HDFS などの既存のデータ レイクでのストリーミング データ処理とバッチ データ処理を統合します。

具体的には、デルタ レイクでは次のようなサービスが提供されます。

  • Spark 上の ACID トランザクション: シリアル化可能な分離レベルにより、読み取り者が一貫性のないデータを目にすることがなくなります。
  • スケーラブルなメタデータ処理: Spark の分散処理機能を使用して、数十億のファイルを含む PB レベルのデータ テーブルのすべてのメタデータを簡単に処理します。
  • ストリームとバッチの統合: Delta Lake のテーブルは、ストリーム処理のバッチ テーブルとソースおよびシンクの両方です。ストリーミング データの取り込み、バッチ履歴のバックフィル、対話型クエリはすべて、すぐに利用できます。
  • スキーマの強制: スキーマ (スキーマ) の変更を自動的に処理し、取り込み中に不正なレコードが挿入されるのを防ぎます。
  • タイムトラベル: データのバージョン管理により、ロールバック、完全な履歴監査証跡、再現可能な機械学習実験が可能になります。
  • upsert/delete: マージ、更新、削除操作をサポートし、変更データ キャプチャ、緩やかに変化するディメンション (SCD) 操作、ストリーム アップグレードなどの複雑なシナリオを可能にします。

デルタ湖をどうするか?

ビッグデータ アーキテクチャは現在、開発、運用、保守が困難です。

最新のデータ アーキテクチャでは、リアルタイム コンピューティング、データ レイク、データ ウェアハウスが少なくとも 3 つの方法で使用されることがよくあります。

ビジネス データは、より高速な配信を優先する Apache Kafka などのストリーミング ネットワーク経由で転送されます。

Apache Kafka については、私のブログ「Kafka とは何ですか?」を参照してください。

その後、データはデータ レイクに収集され、Apache Hadoop や Amazon S3 などの大規模で安価なストレージとして使用されます。

残念ながら、データ レイクだけではパフォーマンスや品質の点でハイエンド ビジネス アプリケーションをサポートできないため、最も重要なデータはデータ ウェアハウスにアップロードされます。

これらのストレージ コストはデータ レイクよりも大幅に高くなりますが、パフォーマンス、同時実行性、セキュリティが大幅に向上します。

バッチおよびストリーム処理システムは、一般的なレコード準備手法である Lambda アーキテクチャで同時にレコードを準備します。

結果は調査中に結合され、包括的な回答が提供されます。

このアーキテクチャは、最近生成されたイベントだけでなく古いイベントも処理するためのレイテンシ要件が厳しいことで知られています。

このアーキテクチャの主な欠点は、2 つの別々のシステムを維持するための開発と運用の負担がかかることです。

過去には、バッチ処理とストリーム処理を 1 つのシステムに統合する試みがありました。

一方で、企業の試みが必ずしも成功するとは限りません。

ほとんどのデータベースの主要なコンポーネントは ACID です。

ただし、HDFS や S3 に関しては、ACID データベースと同じ信頼性を提供するのは困難です。

Delta Lake は、レコード ディレクトリへのすべてのコミットを追跡することにより、トランザクション ログに ACID トランザクションを実装します。

Delta Lake アーキテクチャはシリアル化された分離レベルを提供し、多くのユーザー間でデータの一貫性を確保します。


寄木細工 VS デルタ・レイク

Delta Lake の基礎となるデータのストレージ形式は Parquet データ形式のラッパーですが、Parquet に加えていくつかの追加機能を提供します。

寄木細工については、私のブログを参照してください -寄木細工とは何ですか?

違いは次のとおりです。

寄木細工 デルタ湖
カラムナ型データストレージ ACID トランザクション ストレージ レイヤー
型宣言のエンコーディング スケーラブルなメタデータ処理
データバージョンがサポートされていません サポートデータバージョン
データ処理フレームワークに関係なく、Hadoop エコシステム内のあらゆるプロジェクトに適用可能 Spark 処理フレームワークにのみ適用され、Presto、Athena などと統合できます。

デルタ湖の建築

ここに画像の説明を挿入

デルタ湖の建築は、一般的に 3 つのエリアに分かれています。

ここで、ブロンズテーブルは典型的なデータ レイクであり、大量のデータが絶えず流れ込んでいます。この時点で、データはさまざまなソースから取得されており、中にはそれほどきれいではないため、データがダーティである (つまり、データ品質が低い) 可能性があります。

データ品質については、私のブログ「データ品質を評価する方法」を参照してください。

その後、データは、データ レイクに接続されたデータ ストリームのソースと同じように、高速で一定の流れでSilverテーブルに連続的に流れ込みます。

データが下流に流れると、さまざまな関数、フィルター、クエリ変換を通じてクリーンアップおよびフィルター処理され、データが流れるにつれて純度が高まります。

下流のデータ処理、つまりゴールドテーブルに到達すると、最終的なクレンジングと厳格なテストを経て準備が整います。これは、消費者、つまり機械学習アルゴリズム、データ分析などは非常にうるさく、汚染されたデータを許容しないためです。


デルタ湖はどのように機能しますか?

Delta Lake の仕組みを理解するには、トランザクション ログの仕組みを理解する必要があります。

トランザクション ログの実行スレッドは、ACID トランザクション、スケーラブルなメタデータ処理、タイム トラベルなど、多くの重要な機能を通じて実行されます。

ユーザーが変更されたコマンドを実行するたびに、Delta Lake はそれを 1 つ以上のアクションで構成される一連のステップに分割します。

アクションは Spark の概念です。詳細については、私のブログを参照してください — Spark Core のコア概念をすべてまとめて

これらのアクションには次のものが含まれます。

  • ファイルの追加: データファイルを追加します
  • DELETE FILE: データファイルを削除します
  • メタデータの更新: テーブルのメタデータを更新します。
  • セットアップ トランザクション: ID を持つマイクロバッチを作成する構造ストリーミング ジョブを文書化します。
  • プロトコルの変更: Delta Lake を最新のセキュリティ プロトコルに移行することでセキュリティが強化されました。
  • コミット情報: コミットに関する情報が含まれます。

おすすめ

転載: blog.csdn.net/Shockang/article/details/126804682
おすすめ