Iceberg は、データレイク向けのオープンなテーブル形式です。 Iceberg を使用すると、Hadoop Distributed File System(HDFS)または Alibaba Cloud Object Storage Service(OSS)上に独自のデータレイクストレージサービスを迅速に構築できます。その後、オープンソースビッグデータエコシステムの Apache Flink、Apache Spark、Apache Hive、または Apache Presto などのコンピューティングエンジンを使用して、データレイク内のデータを分析できます。
機能
Apache Iceberg は、Hive データをクラウドに移行するために設計されています。複数回の更新がリリースされた後、Apache Iceberg はクラウドにデプロイされたデータレイクの標準テーブル形式になりました。 Apache Iceberg の詳細については、Apache Iceberg 公式 Web サイトをご覧ください。
Apache Iceberg は、次の機能を提供します。
HDFS またはオブジェクトストレージシステムに基づいて、低コストの軽量データレイクストレージサービスを構築します。
データの取り込みと分析のために、主流のオープンソースコンピューティングエンジンに接続します。
包括的な原子性、一貫性、独立性、耐久性(ACID)セマンティクスを提供します。
行レベルのデータ変更をサポートします。
履歴バージョンのバックトラッキングをサポートします。
効率的なデータフィルタリングをサポートします。
スキーマ変更をサポートします。
パーティション変更をサポートします。
非表示パーティションをサポートします。
次の表は、システムアーキテクチャ、ビジネス価値、およびメンテナンスコストの観点から、オープンソースの ClickHouse(リアルタイムデータウェアハウス)、オープンソースの Hive(オフラインデータウェアハウス)、および Alibaba Cloud E-MapReduce(EMR)Iceberg(データレイク)を比較したものです。
項目 | サブ項目 | オープンソース ClickHouse | オープンソース Hive | Alibaba Cloud EMR Iceberg |
システムアーキテクチャ | アーキテクチャ | 統合コンピューティングおよびストレージ | 分離コンピューティングおよびストレージ | 分離コンピューティングおよびストレージ |
複数コンピューティングエンジン | サポートされていません | サポートされています | サポートされています | |
オブジェクトストレージシステムでのデータストレージ | サポートされていません | 完全にはサポートされていません | サポートされています | |
HDFS でのデータストレージ | サポートされていません | サポートされています | サポートされています | |
ストレージ形式のオープン性 | いいえ | はい | はい | |
ビジネス価値 | 適時性 | 秒単位の精度 | 時間または日単位の精度 | 分単位の精度 |
コンピューティングの柔軟性 | 低 | 高 | 高 | |
トランザクション | サポートされていません | 完全にはサポートされていません | サポートされています | |
テーブルレベルのセマンティック全般性 | 低い | 低い | 優れている | |
行レベルのデータ変更 | サポートされていません | 限定的なサポート | サポートされています | |
データ品質 | 優れている | 良好 | 良好 | |
メンテナンスコスト | クエリパフォーマンス | 高 | 非常に高い | 非常に高い |
ストレージコスト | 高 | 中 | 低 | |
セルフサービス | サポートされていません | サポートされていません | サポートされています | |
リソースのスケーラビリティ | 中 | 中 | 優れている |
Alibaba Cloud EMR Iceberg と Apache Iceberg の比較
次の表は、基本機能、データ変更、およびコンピューティングエンジンの観点から、Alibaba Cloud EMR Iceberg と Apache Iceberg を比較したものです。
チェックマーク(✓)は関連項目がサポートされていることを示し、クロス記号(x)は関連項目がサポートされていないことを示します。
カテゴリ | 項目 | サブ項目 | Apache Iceberg | EMR Iceberg |
基本機能 | ACID | なし | ✓ | ✓ |
履歴バージョンのバックトラッキング | なし | ✓ | ✓ | |
ソースとシンクの統合 | バッチ | ✓ | ✓ | |
ストリーミング | ✓ | ✓ | ||
効率的なデータフィルタリング | なし | ✓ | ✓ | |
データ変更 | スキーマ進化 | なし | ✓ | ✓ |
パーティション進化 | なし | ✓ | ✓ | |
コピーオンライト更新 | なし | ✓ | ✓ | |
マージオンリード更新 | 読み取り | ✓ | ✓ | |
書き込み | ✓ | ✓ | ||
圧縮 | x | x | ||
コンピューティングエンジン | Apache Spark | 読み取り | ✓ | ✓ |
書き込み | ✓ | ✓ | ||
Apache Hive | 読み取り | ✓ | ✓ | |
書き込み | ✓ | ✓ | ||
Apache Flink | 読み取り | ✓ | ✓ | |
書き込み | ✓ | ✓ | ||
PrestoDB または Trino | 読み取り | ✓ | ✓ | |
書き込み | ✓ | ✓ | ||
プログラミング言語 | Java | なし | ✓ | ✓ |
Python | なし | ✓ | ✓ | |
高度な機能 | Alibaba Cloud OSS へのネイティブ接続 | なし | x | ✓ |
Alibaba Cloud Data Lake Formation(DLF)へのネイティブ接続 | なし | x | ✓ | |
ローカルディスクのデータキャッシングに基づくデータアクセス高速化 | なし | x | ✓ | |
小規模ファイルの自動マージ | なし | x | ✓ |
この表の情報は、2021 年 9 月末時点の Apache Iceberg と Alibaba Cloud EMR Iceberg の状態に関する客観的な分析に基づいて提供されています。この情報は、Apache Iceberg と EMR Iceberg の更新に基づいて変更される可能性があります。
シナリオ
Iceberg は、汎用データレイクサービスの中核コンポーネントの 1 つです。次の表に、Iceberg を使用できるシナリオを示します。
シナリオ | 説明 |
リアルタイムでのデータの書き込みと読み取り | アップストリームデータは、クエリを実行するためにリアルタイムで Iceberg ベースのデータレイクに取り込まれます。 Flink または Spark ストリーミングジョブを実行して、ログデータをリアルタイムで Iceberg テーブルに書き込むことができます。その後、Hive、Spark、Flink、Presto などのコンピューティングエンジンを使用して、データをリアルタイムで読み取ることができます。 詳細については、「Apache Iceberg コネクタ」、「Spark ストリーミングジョブを実行してデータを Iceberg テーブルに書き込む」、「Spark を使用してデータを読み取る」、および「Apache Iceberg コネクタ」をご参照ください。 Iceberg は ACID トランザクションをサポートしており、データの書き込み操作をデータの読み取り操作から分離して、ダーティデータを回避します。 |
データの削除または更新 | ほとんどのデータウェアハウスは、行レベルのデータの削除または更新をサポートしていません。ほとんどの場合、オフラインジョブを実行してソーステーブルからすべてのデータを読み取り、データを変更してから、変更されたデータをソーステーブルに書き込むことができます。 Iceberg を使用する場合、データの変更はテーブルではなくファイルに対して実行できます。変更操作の範囲は狭まります。このようにして、より小さな範囲に基づいて変更操作を実行することで、ビジネスデータを更新または削除できます。 Iceberg ベースのデータレイクでは、 |
データ品質の制御 | Iceberg スキーマを使用して、書き込まれているデータから異常データをチェックして削除したり、異常データをさらに処理したりできます。 |
テーブルのスキーマの変更 | Spark SQL でサポートされている DDL ステートメントを使用して、Iceberg テーブルのスキーマを変更できます。 Iceberg テーブルのスキーマを変更する場合、新しいスキーマに基づいてテーブル内のすべての履歴データをエクスポートする必要はありません。したがって、スキーマの変更速度は速くなります。 Iceberg は ACID トランザクションをサポートしており、スキーマの変更がデータの読み取り操作に影響を与えるのを防ぎます。このようにして、読み取るデータと書き込むデータは一貫性があります。 |
リアルタイム機械学習 | 機械学習のシナリオでは、データのクレンジング、変換、特性評価など、データの処理に長い時間がかかる場合があります。履歴データとリアルタイムデータを処理する必要がある場合もあります。 Iceberg は、これらのワークフローを簡素化します。 Iceberg は、データをクレンジング、変換、特性評価するための完全で信頼性の高いリアルタイムストリームを提供します。履歴データとリアルタイムデータを処理する必要はありません。 Iceberg は、機械学習アルゴリズムを使用する開発者の要件を満たすために開発された Python 用のネイティブ SDK もサポートしています。 |