Iceberg catalog
Iceberg catalog は、StarRocks が v2.4 以降でサポートする外部 catalog の一種です。Iceberg catalog を使用すると、以下のことが可能です。
- Iceberg に保存されたデータを直接クエリし、手動でテーブルを作成する必要がありません。
- INSERT INTO または非同期マテリアライズドビュー(v2.5 以降でサポート)を使用して、Iceberg に保存されたデータを処理し、StarRocks にデータをロードします。
- StarRocks 上で Iceberg データベースやテーブルを作成または削除したり、StarRocks テーブルから Parquet 形式の Iceberg テーブルにデータをシンクする操作を INSERT INTO を使用して行います(この機能は v3.1 以降でサポートされています)。
Iceberg クラスターで SQL ワークロードを成功させるためには、StarRocks クラスターが Iceberg クラスターのストレージシステムとメタストアにアクセスできる必要があります。StarRocks は以下のストレージシステムとメタストアをサポートしています。
-
分散ファイルシステム (HDFS) または AWS S3、Microsoft Azure Storage、Google GCS、その他の S3 互換ストレージシステム(例:MinIO)などのオブジェクトストレージ
-
Hive metastore、AWS Glue、または Tabular などのメタストア
- ストレージとして AWS S3 を選択した場合、メタストアとして HMS または AWS Glue を使用できます。他のストレージシステムを選択した場合、メタストアとして HMS のみを使用できます。
- メタストアとして Tabular を選択した場合、Iceberg REST catalog を使用する必要があります。
使用上の注意
StarRocks を使用して Iceberg からデータをクエリする際には、以下の点に注意してください。
ファイル形式 | 圧縮形式 | Iceberg テーブルバージョン |
---|---|---|
Parquet | SNAPPY, LZ4, ZSTD, GZIP, NO_COMPRESSION |
|
ORC | ZLIB, SNAPPY, LZO, LZ4, ZSTD, NO_COMPRESSION |
|
統合準備
Iceberg catalog を作成する前に、StarRocks クラスターが Iceberg クラスターのストレージシステムとメタストアと統合できることを確認してください。
ス トレージ
ストレージタイプに合ったタブを選択してください。
- AWS S3
- HDFS
Iceberg クラスターが AWS S3 をストレージとして使用する場合、または AWS Glue をメタストアとして使用する場合、適切な認証方法を選択し、StarRocks クラスターが関連する AWS クラウドリソースにアクセスできるように必要な準備を行ってください。
推奨される認証方法は以下の通りです。
- インスタンスプロファイル
- 想定ロール
- IAM ユーザー
上記の3つの認証方法の中で、インスタンスプロファイルが最も広く使用されています。
詳細については、AWS IAM での認証準備を参照してください。
HDFS をストレージとして選択した場合、StarRocks クラスターを次のように設定します。
-
(オプション)HDFS クラスターおよび Hive metastore にアクセスするためのユーザー名を設定します。デフォルトでは、StarRocks は FE および BE または CN プロセスのユーザー名を使用して HDFS クラスターおよび Hive metastore にアクセスします。また、各 FE の fe/conf/hadoop_env.sh ファイルの先頭、および各 BE の be/conf/hadoop_env.sh ファイルまたは各 CN の cn/conf/hadoop_env.sh ファイルの先頭に
export HADOOP_USER_NAME="<user_name>"
を追加することでユーザー名を設定することもできます。これらのファイルでユーザー名を設定した後、各 FE および各 BE または CN を再起動してパラメータ設定を有効にします。StarRocks クラスターごとに1つのユーザー名しか設定できません。 -
Iceberg データをクエリする際、StarRocks クラスターの FEs および BEs または CNs は HDFS クライアントを使用して HDFS クラスターにアクセスします。ほとんどの場合、その目的を達成するために StarRocks クラスターを設定する必要はなく、StarRocks はデフォルトの設定を使用して HDFS クライアントを起動します。次の状況でのみ StarRocks クラスターを設定する必要があります。
- HDFS クラスターに高可用性 (HA) が有効になっている場合: HDFS クラスターの hdfs-site.xml ファイルを各 FE の $FE_HOME/conf パス、および各 BE の $BE_HOME/conf パスまたは各 CN の $CN_HOME/conf パスに追加します。
- HDFS クラスターに View File System (ViewFs) が有効になっている場合: HDFS クラスターの core-site.xml ファイルを各 FE の $FE_HOME/conf パス、および各 BE の $BE_HOME/conf パスまたは各 CN の $CN_HOME/conf パスに追加します。
クエリを送信した際に不明なホストを示すエラーが返された場合、HDFS クラスターのノードのホスト名と IP アドレスのマッピングを /etc/hosts パスに追加する必要があります。
Kerberos 認証
HDFS クラスターまたは Hive metastore に Kerberos 認証が有効になっている場合、StarRocks クラスターを次のように設定します。
- 各 FE および各 BE または CN で
kinit -kt keytab_path principal
コマンドを実行して、Key Distribution Center (KDC) から Ticket Granting Ticket (TGT) を取得します。このコマンドを実行するには、HDFS クラスターおよび Hive metastore へのアクセス権限が必要です。このコマンドを使用して KDC にアクセスすることは時間に敏感であるため、cron を使用してこのコマンドを定期的に実行する必要があります。 - 各 FE の $FE_HOME/conf/fe.conf ファイルおよび各 BE の $BE_HOME/conf/be.conf ファイルまたは各 CN の $CN_HOME/conf/cn.conf ファイルに
JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf"
を追加します。この例では、/etc/krb5.conf
は krb5.conf フ ァイルの保存パスです。必要に応じてパスを変更できます。
Iceberg catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "iceberg",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams
)