Apache Iceberg とは何ですか?
Apache Iceberg は、分散型のコミュニティ主導型の Apache 2.0 ライセンスの 100% オープンソースデータテーブル形式で、データレイクに保存されている大規模なデータセットのデータ処理を簡素化するのに役立ちます。データエンジニアが Apache Iceberg を使っているのは、どんな規模でも高速で効率的で信頼性が高く、データセットが時間の経過とともにどのように変化するかを記録できるからです。Apache Iceberg は、Apache Spark、Apache Flink、Apache Hive、Presto などの一般的なデータ処理フレームワークと簡単に統合できます。
トランザクションデータレイクとは
データレイクは、規模にかかわらず、すべての構造化データと非構造化データを保存できる一元化されたリポジトリです。データトランザクションは、1 回の操作で実行される一連のデータ交換です。たとえば、お客様が銀行口座からお金を引き出す場合、銀行は 1 回のデータトランザクションで複数のデータ交換を同時に行います。これには、口座に十分な残高があることの確認、本人確認、口座からの引き落としが含まれます。トランザクションデータレイクは、データを大規模に保存するだけでなく、トランザクション運用をサポートし、データの正確性と一貫性を確保し、データやデータ構造が時間の経過とともにどのように変化するかを追跡できるデータレイクの一種です。これらの特性は、まとめてアトミック性、一貫性、分離、および耐久性 (ACID) と呼ばれます。
- アトミック性により、各トランザクションは成功するか完全に失敗するかのいずれかの 1 つのイベントであることが保証されます。中途半端な状態はありません。
- 一貫性により、書き込まれたすべてのデータがデータレイクの定義されたルールに従って有効であり、データの正確性と信頼性が保証されます。
- 分離により、互いに干渉することなく複数のトランザクションを同時に実行でき、各トランザクションが独立して実行されることが保証されます。
- 耐久性とは、トランザクションが送信された後にデータが失われたり破損したりしないことを意味します。停電などのシステム障害が発生した場合でも、データを回復できます。
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 Iceberg を使っていますか?
Apache Iceberg を使用する人の中には、データエンジニア、データ管理者、データアナリスト、データサイエンティストなどがいます。 データエンジニアと管理者は、Apache Iceberg を使用してスケーラブルなデータストレージシステムを設計および構築できます。 データアナリストやデータサイエンティストは、Apache Iceberg を使用して大規模なデータセットを効率的に分析できます。
Apache Iceberg を選ぶべき理由
Apache Iceberg は、大規模なデータセットを高速かつ効率的に処理する方法を提供します。VPS ホスティングには次の利点があります。
- オープンソース: Apache Iceberg はオープンソースプロジェクトです。つまり、無料で使用でき、特定のニーズに合わせてカスタマイズできます。また、プロジェクトの改善や新機能の追加を継続的に行っているデベロッパーの活発なコミュニティもあります。
- スケーラビリティ: Apache Iceberg は、大規模なデータセットを効率的に処理するように設計されています。複数のノードにわたってデータを分割して整理できるため、ワークロードを分散してデータ処理を高速化できます。
- パフォーマンス: Apache Iceberg には、列指向ストレージや、述語のプッシュダウンやスキーマの進化などの圧縮技術など、クエリのパフォーマンスを最適化するさまざまな機能があります。
- 柔軟性: Apache Iceberg では、クエリを書き直したり、データ構造を再構築したりすることなく、データの編成方法を変更して、時間の経過とともに進化させることができます。また、複数のデータ形式とデータソースをサポートしているため、既存のシステムとの統合が容易です。
- 信頼性: Apache Iceberg ではトランザクションのサポートを通じてデータ整合性と信頼性を保証します。時間の経過に伴うデータの変化を追跡し、過去のバージョンにロールバックして問題の修正に役立てることができます。
Iceberg をサポートしている AWS サービス
Apache Iceberg では、Apache Spark、Apache Flink、Apache Hive、および Presto などの一般的なデータ処理フレームワークをサポートしています。Amazon Redshift、Amazon Athena、Amazon EMR、AWS Glue などの 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 を使用できます。Spark、Trino、Flink および Hive などの EMR フレームワークは Apache Iceberg をサポートしています。
- AWS Glue は、サーバーレスなデータ統合サービスで、分析、機械学習 (ML)、アプリケーション開発用に、複数のソースからデータを検出、準備、移動、統合することをより容易にします。 AWS Glue 3.0 以降では、データレイク用の Apache Iceberg フレームワークがサポートされています。AWS Glue を使用して Amazon S3 の Iceberg テーブルで読み取りおよび書き込み操作を実行したり、AWS Glue データカタログを使用して Iceberg テーブルを操作したりすることができます。挿入、更新、およびすべての Spark クエリ、Spark 書き込みなどの追加操作もサポートされています。