Apache Iceberg とは

Apache Iceberg は、データレイクに保存される大規模な分析データセット向けに設計されたオープンソースのテーブル形式です。従来のデータレイク テーブル形式の多くの制限に対処し、データ レイクハウス アーキテクチャの信頼性、パフォーマンス、柔軟性を向上させます。Cloud Storage などのデータレイク ストレージの上層に位置し、大規模なデータセットにデータベースのような機能を提供するインテリジェント レイヤと考えてください。Iceberg は、単なるファイル管理ではなく、データファイルのコレクションとしてテーブルを管理し、スキーマの進化、タイムトラベル、より効率的なクエリ プランニングなどの機能を実現します。これにより、データ アナリスト、データ サイエンティスト、エンジニアは、データレイク内のデータをより簡単かつ効率的に処理し、分析ワークロードを増やすことができます。

Apache Iceberg の用途

Apache Iceberg は、最新のデータ アーキテクチャ、特にデータレイクを活用するアーキテクチャにおいて、さまざまな目的に使用できます。主なユースケースは次のとおりです。

  • 信頼性の高いデータレイクの有効化: Iceberg は、操作が原子性、整合性、独立性、耐久性(ACID)であることを保証します。これにより、従来のファイルベースのアプローチで発生する可能性のあるデータの破損や不整合を防ぐことができます。
  • スキーマの進化をサポート: スキーマの変更に苦労することが多い古いテーブル形式とは異なり、Iceberg ではシームレスで安全なスキーマの進化が可能です。進行中のクエリを中断したり、費用のかかるデータ移行を必要としたりすることなく、列の追加、削除、名前変更を行うことができます。
  • タイムトラベル機能の提供: Iceberg はテーブル スナップショットの履歴を維持するため、ユーザーは特定の時点に存在したデータに対してクエリを実行できます。これは、監査、デバッグ、分析の再現に非常に役立ちます。
  • クエリのパフォーマンスの最適化: Iceberg のメタデータ管理により、クエリエンジンは不要なデータファイルを効率的に削除できるため、特に大規模なデータセットでクエリの実行を大幅に高速化できます。
  • データ ガバナンスを促進: テーブルのバージョニングやメタデータ管理などの機能により、データ変更の明確な監査証跡が提供され、データ ガバナンスとコンプライアンスへの取り組みが強化されます。
  • データレイク ハウスの構築: Iceberg は、データレイクのスケーラビリティと柔軟性と、データ ウェアハウスのデータ マネジメント機能を組み合わせたデータレイクハウスを構築するための基盤コンポーネントです。分析ワークロードと運用ワークロードの両方を同じデータで実行できます。
  • ML のデータ信頼性を向上: Iceberg が提供する一貫性のあるバージョン付きデータセットは、信頼性の高い ML モデルのトレーニングとデプロイに不可欠です。データ サイエンティストは、過去のデータ スナップショットを使用して、実験を簡単に再現できます。

Apache Iceberg の仕組み

基本的に、Apache Iceberg は、データレイク内の実際のデータファイルの上にメタデータ レイヤを導入することで機能します。このメタデータは、従来のファイルベースのシステムよりも整理された堅牢な方法でテーブルの構造とコンテンツをトラッキングします。主なメカニズムは次のとおりです。

  1. メタデータ管理: Iceberg は、テーブルのスキーマ、パーティション、データファイルの場所を記述するメタデータ ファイルを維持します。通常、これらのメタデータ ファイルはデータレイクにデータと一緒に保存されます。
  2. カタログ: Iceberg はカタログを使用して、各テーブルの現在のメタデータの場所をトラッキングします。このカタログは、Hive Metastore のようなサービス、ファイル システムベースの実装、クラウドネイティブのカタログ サービスなどです。
  3. テーブル スナップショット: テーブルに変更(データの追加、データの削除、スキーマの進化など)が行われるたびに、Iceberg はテーブルのメタデータの新しいスナップショットを作成します。これらのスナップショットは不変であり、テーブルの状態の履歴レコードを提供します。
  4. マニフェスト リストとマニフェスト ファイル: 各スナップショットはマニフェスト リストを参照し、マニフェスト リストは 1 つ以上のマニフェスト ファイルをリストします。マニフェスト ファイルには、個々のデータファイルに関するメタデータ(場所、パーティション値、統計情報(行数や値の範囲など)など)が含まれます。
  5. データ ファイル: データレイクにデータを保存する実際の Parquet、ORC、または Avro ファイルです。Iceberg のメタデータは、これらのファイルとテーブル内でのファイルの組織化を追跡します。

Apache Iceberg アーキテクチャ

Apache Iceberg のアーキテクチャには、次のようないくつかの主要コンポーネントが連携して機能します。

  • データレイク ストレージ: これは、Cloud Storage などの基盤となるストレージ レイヤです。実際のデータファイル(Parquet、ORC、Avro などの形式)と Iceberg のメタデータ ファイルが保存されます。
  • Iceberg カタログ: このコンポーネントは、Iceberg テーブルのメタデータ ポインタを管理します。各テーブルのメタデータの現在のバージョンを追跡する中央レジストリとして機能します。一般的なカタログの実装には、次のようなものがあります。
  • Hive メタストア: 広く使用されているメタデータ リポジトリで、Hadoop ベースのシステムでよく使用されます。
  • ファイル システム カタログ: カタログ情報がデータレイク ファイル システムに直接保存されるシンプルな実装です。
  • クラウドネイティブ カタログ サービス: クラウド プロバイダが提供する、メタデータを保存および管理するためのマネージド サービス。
  • Iceberg メタデータ: テーブルの構造とデータを追跡するメタデータ ファイルの複数の層で構成されます。
  • テーブル メタデータ ファイル: このファイルは現在のマニフェスト リストを指し、スキーマやパーティショニングの仕様など、テーブルに関する大まかな情報が含まれています。
  • マニフェスト リスト: このファイルには、テーブルの特定のスナップショット内のデータファイルに関するメタデータを含むマニフェスト ファイルがリストされます。
  • マニフェスト ファイル: これらのファイルには、個々のデータファイルに関する詳細な情報(場所、パーティション値、統計情報など)が含まれます。
  • クエリエンジンと処理フレームワーク: Iceberg テーブルとやり取りしてデータの読み取りと書き込みを行うツールです。これらのエンジンは、クエリの計画と実行を最適化するために Iceberg のメタデータを活用します。
  • コンピューティング リソース: これは、クエリエンジンと処理フレームワークを実行する基盤となるインフラストラクチャ(仮想マシンやコンテナなど)です。

Apache Iceberg とデータレイク

Apache Iceberg は、信頼性とパフォーマンスに優れたテーブル形式を追加することで、データレイクの機能を大幅に強化します。Iceberg のようなテーブル形式がない従来のデータレイクでは、データは多くの場合、単なるファイルの集合体です。これにはいくつかの課題があります。

  • スキーマの進化の欠如: データの構造を変更するのは複雑で、エラーが発生しやすい
  • 一貫性のない読み取り: 同時実行の書き込みオペレーションにより、古いデータと新しいデータが混在したデータをクエリで読み取る可能性がある
  • クエリのパフォーマンスが低下: クエリエンジンをガイドするメタデータがないため、データの大部分をスキャンしなければならないことがよくある
  • データ マネジメントの難しさ: タイムトラベルやバージョニングなどの機能がすぐに利用できない

Iceberg は、データレイクの上に構造化レイヤを構築することで、これらの制限に対処します。データレイクにデータベースのような機能をもたらし、より強力で管理しやすいデータ レイクハウスに変換します。テーブルを豊富なメタデータを持つファイルのコレクションとして管理することで、Iceberg は次のことが可能になります。

  • 信頼性と一貫性のあるデータアクセス: ACID プロパティによりデータの完全性が確保される
  • 効率的なクエリ処理: メタデータドリブンのデータスキップとフィルタリングによりクエリが高速化
  • 柔軟なデータ マネジメント: スキーマの進化とタイムトラベルにより、データのメンテナンスと分析が簡素化される
  • 相互運用性: Iceberg は、データレイクで一般的に使用されるさまざまなクエリエンジンや処理フレームワークと互換性があるように設計されています。

Google Cloud でビジネスの課題を解決する

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。
お客様独自の課題を詳細に検討するには、Google Cloud のセールス スペシャリストまでご相談ください。

Apache Iceberg の課題

Apache Iceberg には大きなメリットがありますが、考慮すべき課題もあります。

増加する複雑さ

Iceberg を導入すると、データレイクに抽象化の層が追加され、システム全体の複雑さが増す可能性があります。メタデータ レイヤを理解して管理するには、特定の知識が必要です。

カタログの依存関係

Iceberg は、テーブルのメタデータの場所を管理するために、カタログ サービス(Hive Metastore など)を使用しています。カタログの可用性とパフォーマンスは、システム全体に影響を与える可能性があります。

学習曲線

チームは、Iceberg に関連するコンセプトとベスト プラクティスを学ぶ必要があります。そのためにトレーニングやスキルアップが必要になる場合があります。

潜在的なオーバーヘッド

Iceberg は多くの場合、クエリのパフォーマンスを最適化しますが、メタデータ管理自体にオーバーヘッドが発生します。特に、非常に小さなデータセットや非常に単純なクエリの場合に顕著です。

ツールの成熟度

Iceberg のエコシステムは急速に成長していますが、ツールやインテグレーションの一部は、確立されたデータ ウェアハウジング テクノロジーに比べて、まだ成熟していない可能性があります。

移行の労力

既存のデータレイクを Iceberg を使用するために移行するのは、データの書き換えや既存のデータ パイプラインの変更が必要になる可能性があり、大規模な作業になる可能性があります。

Google Cloud と Apache Iceberg

Google Cloud は、Apache Iceberg を活用するための堅牢な環境を提供します。いくつかの Google Cloud サービスが Iceberg とうまく統合されるため、ユーザーは強力でスケーラブルなデータ レイクハウス ソリューションを構築できます。

次のステップ

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud