Iceberg は Apache Foundation が管理するオープンソースのデータテーブルフォーマットであり、従來の Hive 表形式の制限を克服するための革新的なアプローチを提供しています。Impala は大規模なデータ処理に特化した MPP(Massively Parallel Processing)アーキテクチャを採用しており、Iceberg との統合により、読み取りだけでなく、更新・削除・最適化などの高度な操作をサポートするようになりました。この記事では、Iceberg と Impala の統合技術、その特徴、および実際の応用方法について詳しく解説します。
従來の Hive 表形式は、データディレクトリとファイルで構成され、同じスキーマと形式(Parquet、ORC など)を保証する必要があります。元データは Hive Metastore で管理され、以下の制限がありました。
これらの制限により、データの管理と処理効率に課題が生じていました。
Iceberg は、以下の特徴を持つ新しいデータテーブルフォーマットとして注目されています。
metadata
ファイル(JSON 形式)により、スキーマ、分區レイアウト、現在のスナップショット指針を管理これらの機能により、Iceberg は従來の制限を克服し、データ管理の柔軟性と信頼性を向上させます。
Impala は MPP アーキテクチャを採用し、協調者(Coordinator)とバックエンド実行器(Backend)で構成されています。これにより、HDFS、Ozone、S3 などのストレージシステムと Parquet、ORC、Avro などのファイル形式をサポートします。LLVM を用いたランタイムコード生成により、クエリ性能が最適化されています。
Iceberg との統合では、以下の特徴が提供されます。
これらの統合により、Impala は Iceberg テーブルに対して高度な操作を実行可能になります。
Iceberg は Merge on Read と Copy on Write の 2 種類の戦略を採用しています。
削除操作では、Position Delete が優先され、ファイル名と位置情報を記録して読み取り時に直接マッチングします。Equality Delete は性能が劣るため、現在は非推奨です。
更新操作では、更新クエリを挿入クエリに変換し、仮想テーブルに書き込みます。複數のデータシンク(Data Sync)が同時に削除と更新データを処理します。
マージ操作では、2 階段の処理が行われます。
専用の Merge Sync コンポーネントにより、挿入と削除のシンクを統合しています。
ALTER TABLE DROP PARTITION
で指定された分區を削除。複雑な述語や分區変換(Partition Transform)をサポートこれらのメンテナンス操作により、Iceberg テーブルの健康狀態を維持し、長期的な性能を確保します。
Impala は以下の最適化戦略を採用しています。
また、file_size_threshold
などのパラメータにより、Optimize Table の実行範囲を制御し、小ファイルに特化した最適化を実現します。
これらの特徴により、Iceberg と Impala の統合は、現代のデータ処理ニーズに適した強力なソリューションとなっています。
Iceberg と Impala の統合により、従來のデータベースの制限を克服し、柔軟なデータ管理と高性能なクエリ処理が可能になります。Optimize Table や Rollback などのメンテナンス操作は、長期的なデータ管理の信頼性を確保する上で不可欠です。実際の導入では、パラメータの調整や定期的なメンテナンス計畫を検討することが重要です。この技術の活用により、データ処理の効率と信頼性を向上させることができます。