メインコンテンツに移動

Apache Iceberg とは何ですか?

Apache Icebergは、データレイクに保存されている大規模なデータセットのデータ処理を簡素化するのに役立つ、コミュニティ主導の分散型Apache 2.0ライセンスの 100% オープンソースのデータテーブル形式です。データエンジニアが Apache Iceberg を使っているのは、どんな規模でも高速で効率的で信頼性が高く、データセットが時間の経過とともにどのように変化するかを記録できるからです。Apache Iceberg は、Apache Spark、Apache Flink、Apache Hive、Presto などの一般的なデータ処理フレームワークと簡単に統合できます。

トランザクションデータレイクとは

データレイクは、すべての構造化データと非構造化データをあらゆる規模で保存できる一元化されたリポジトリです。データトランザクションは、1 回の操作で実行される一連のデータ交換です。たとえば、お客様が銀行口座からお金を引き出す場合、銀行は 1 回のデータトランザクションで複数のデータ交換を同時に行います。これには、口座に十分な残高があることの確認、本人確認、口座からの引き落としが含まれます。トランザクションデータレイクは、データを大規模に保存するだけでなく、トランザクション運用をサポートし、データの正確性と一貫性を確保し、データやデータ構造が時間の経過とともにどのように変化するかを追跡できるデータレイクの一種です。これらの特性は、まとめて原子性、一貫性、分離性、耐久性(ACID)と呼ばれます。

  • アトミック性は、各トランザクションが成功または完全に失敗する単一のイベントであることを保証します。中途半端な状態はありません。

  • 一貫性により、書き込まれたすべてのデータがデータレイクの定義されたルールに従って有効であることが保証され、データの正確性と信頼性が保証されます。

  • 分離することで、複数のトランザクションが相互に干渉することなく同時に実行され、各トランザクションが独立して実行されるようになります。

  • 耐久性とは、トランザクションが送信された後にデータが失われたり破損したりしないことを意味します。停電などのシステム障害が発生した場合でも、データを回復できます。

Apache Iceberg を使用するメリット

トランザクションデータレイクに Apache Iceberg を使用する主な利点には、次のようなものがあります。

  • SQL の習熟度:構造化クエリ言語 (SQL) は、あらゆる種類のアプリケーションで頻繁に使用される一般的なクエリ言語です。データアナリストやデベロッパーが SQL を学び、使用するのは、SQL はさまざまなプログラミング言語とうまく統合できるだけでなく、ステートメントに一般的な英語のキーワードを使用しているため、かなり習得しやすいからです。Apache Iceberg を使用すると、SQL (構造化クエリ言語) に精通している人なら誰でも、新しい言語を習得しなくても、データレイクを構築し、ほとんどのデータレイク操作を実行できます。

  • データの一貫性:Apache Iceberg はデータの一貫性を備えているため、データの読み取りと書き込みを行うすべてのユーザーに同じデータが表示されます。

  • データ構造: Apache Iceberg では、スキーマの進化とも呼ばれるデータ構造を簡単に変更できます。つまり、ユーザーは基礎となるデータを破壊することなく、データテーブルから列を追加、名前変更、削除できます。

  • データのバージョン管理:Apache Iceberg はデータのバージョン管理をサポートしています。これにより、ユーザーは時間の経過に伴うデータの変更を追跡できます。これにより、タイムトラベル機能が有効になり、ユーザーは過去のバージョンのデータにアクセスしてクエリを実行し、更新と削除の間のデータへの変更を分析できます。

  • クロスプラットフォームサポート:Apache Iceberg は、Apache Spark、Apache Hive、Presto など、さまざまなストレージシステムやクエリエンジンをサポートしています。これにより、Icebergをさまざまなデータ処理環境で簡単に使用できます。

  • インクリメンタル処理:Icebergはインクリメンタル処理をサポートしています。これにより、ユーザーは前回の実行以降に変更されたデータのみを処理できます。これはCDC(Change Data Capture)とも呼ばれます。これにより、データ処理の効率とパフォーマンスが向上します。

Apache Iceberg の一般的なユースケースにはどのようなものがありますか?

Apache Iceberg は、次のような多くのデータレイクのユースケースに適しています。

  • データプライバシー法の施行時など、頻繁に削除する必要があるデータレイク内のデータテーブル。

  • レコードレベルの更新が必要なデータレイク内のデータテーブル。これは、たとえば、お客様からの返品など後発の事象によって売上データが変更される可能性がある場合など、データが決済された後にデータセットを頻繁に更新する必要がある場合に役立ちます。Iceberg には、データセット全体を再公開しなくても、個々のレコードを更新する機能があります。

  • 緩やかに変化するディメンション (SCD) テーブルなど、予期しない変化があるデータレイク内のデータテーブル。SCD の例としては、名前、場所、連絡先情報を含む顧客レコードテーブルがあります。これらの情報は、時間の経過に伴って未知の間隔で変化する可能性があります。

  • データレイクとのトランザクションでデータの有効性、耐久性、信頼性を保証する必要がある場合は、Apache Iceberg テーブルフォーマットを導入して ACID トランザクションを確実に行うことができます。

  • 傾向を分析を実行したり、一定期間にわたるデータの変更を分析したり、問題を修正するために以前のバージョンに復元またはロールバックしたりするために、過去に戻ってデータの履歴バージョンをクエリする必要がある場合。

Apache アイスバーグは誰が使用していますか?

Apache Iceberg を使用するペルソナには、データエンジニア、データ管理者、データアナリスト、データサイエンティストなどがあります。  データエンジニアと管理者は、Apache Iceberg を使用してスケーラブルなデータストレージシステムを設計および構築できます。  データアナリストやデータサイエンティストは、Apache Iceberg を使用して大規模なデータセットを効率的に分析できます。

Apache Iceberg を選ぶべき理由

Apache Iceberg は、大規模なデータセットを迅速かつ効率的に処理する方法を提供します。これには以下のメリットがあります。

  1. オープンソース:Apache Icebergはオープンソースプロジェクトです。つまり、無料で使用でき、特定のニーズに合わせてカスタマイズできます。また、プロジェクトの改善や新機能の追加を継続的に行っている開発者の活発なコミュニティもあります。

  2. スケーラビリティ:Apache Iceberg は大規模なデータセットを効率的に処理するように設計されています。複数のノード間でデータを分割して整理できるため、作業負荷を分散してデータ処理を高速化できます。

  3. パフォーマンス:Apache Iceberg には、列指向ストレージや、述語プッシュダウンやスキーマエボリューションなどの圧縮技術など、クエリのパフォーマンスを最適化するためのさまざまな機能があります。

  4. 柔軟性:Apache Iceberg では、クエリを書き直したり、データ構造を再構築したりしなくても、データの編成方法を変更して、時間の経過とともに進化させることができます。また、複数のデータ形式とデータソースをサポートしているため、既存のシステムとの統合が容易です。

  5. 信頼性:Apache Iceberg はトランザクションのサポートを通じてデータの一貫性と信頼性を保証します。時間の経過に伴うデータの変化を追跡し、過去のバージョンにロールバックして問題の解決に役立てることができます。

Iceberg をサポートしている AWS サービス

Apache Iceberg は、Apache Spark、Apache Flink、Apache Hive、Presto などの一般的なデータ処理フレームワークをサポートしています。Amazon Redshift、Amazon Athena、 Amazon EMR 、AWS Glue、 Amazon Data Firehose などの AWS サービスには、以下のネイティブサポートが含まれています Apache Iceberg を含むトランザクションデータレイクフレームワーク。Apache Iceberg を、サポートされている AWS サービスと組み合わせることで、多くの場合 S3 のストレージに基づくトランザクションデータレイクが可能になります。

  • Amazon Redshift はフルマネージド型の AI 搭載の SQL 分析およびデータウェアハウスサービスで、お客様のビジネス上の意思決定を迅速かつ費用対効果の高い方法で推進します。Amazon Redshift は超並列処理 (MPP)、マルチクラスター、ゼロ ETL 機能を備えたサーバーレスアーキテクチャを提供し、データ共有によりほぼリアルタイムの分析と AI/ML のユースケースを促進します。お客様は Amazon Redshift を使用して、AWS Glue データカタログからアクセスできるデータレイク内の Apache Iceberg テーブルをクエリし、それをデータウェアハウスのテーブルと結合して包括的な分析を行うことができます。

  • Amazon Athena は、オープンソースのフレームワークに基づいて構築されたサーバーレスのインタラクティブな分析サービスで、オープンテーブルとファイル形式をサポートしています。Athena は、ペタバイト規模のデータが存在する場所で分析するための簡素化された柔軟な方法を提供します。Athena は、データに Apache Parquet 形式を使用し、メタストアに AWS Glue カタログを使用する Apache Iceberg テーブルの読み取り、タイムトラベル、書き込み、DDL クエリをネイティブでサポートしています。

  • Amazon EMR は、Apache Spark、Hadoop、Presto、Hive などのオープンソースフレームワークを使用した、ペタバイト規模のデータ処理、インタラクティブ分析、機械学習のためのビッグデータソリューションです。Amazon EMR 6.5.0 以降では、アイスバーグテーブル形式の Amazon EMR クラスターで Apache Spark 3 を使用できます。スパーク、トリノ、フリンク、ハイブなどの EMR フレームワークは Apache アイスバーグをサポートしています。

  • AWS Glue はサーバーレスのデータ統合サービスで、分析、機械学習 (ML) 、アプリケーション開発のための複数のソースからのデータを簡単に発見、準備、移動、統合できます。  AWS Glue 3.0 以降では、データレイク用の Apache Iceberg フレームワークがサポートされています。AWS Glue を使用して Amazon S3 の Iceberg テーブルで読み取りおよび書き込み操作を実行したり、AWS Glue データカタログを使用して Iceberg テーブルを操作したりすることができます。挿入、更新、すべてのSparkクエリ、Spark書き込みなどの追加操作もサポートされています。

  • Amazon Data Firehose は、Amazon Simple Storage Service (Amazon S3)、Amazon Redshift、Amazon OpenSearch Service、Amazon OpenSearch Service、Amazon OpenSearch Serverless、Splunk、Snowflake、Apache Iceberg Tables、およびDatadog、Dynatrace、LogicMonitor、MongoDB、New Relicなどのサポートされているサードパーティのサービスプロバイダーが所有するカスタムHTTPエンドポイントまたはHTTPエンドポイントなどの宛先にリアルタイムストリーミングデータを配信するためのフルマネージド型のサーバーレスサービスです。コラロジックス、エラスティック。Amazon Data Firehose を使用することで、アプリケーションの作成やリソースの管理を行う必要がなくなります。Amazon Data Firehose にデータを送信するようデータプロデューサーを設定すると、指定した送信先にデータが自動配信されます。データを配信する前に変換するように Amazon Data Firehose を設定することもできます。