Unified catalog
Unified catalogは、StarRocks が v3.2 以降で提供する外部カタログの一種で、Apache Hive™、Apache Iceberg、Apache Hudi、Delta Lake、Apache Kudu のデータソースをインジェストなしで統合データソースとして扱います。Unified catalogを使用すると、次のことが可能です:
- Hive、Iceberg、Hudi、Delta Lake、Paimon、Kudu に保存されたデータを手動でテーブルを作成することなく直接クエリできます。
- INSERT INTO または非同期マテリアライズドビュー(v2.5 以降でサポート)を使用して、Hive、Iceberg、Hudi、Delta Lake、Paimon、Kudu に保存されたデータを処理し、StarRocks にデータをロードできます。
- StarRocks 上で操作を行い、Hive および Iceberg のデータベースやテーブルを作成または削除できます。
統合データソースでの SQL ワークロードを成功させるためには、StarRocks クラスターが統合データソースのストレージシステムとメタストアにアクセスできる必要があります。StarRocks は以下のストレージシステムとメタストアをサポートしています:
-
分散ファイルシステム (HDFS) または AWS S3、Microsoft Azure Storage、Google GCS、その他の S3 互換ストレージシステム(例:MinIO)などのオブジェクトストレージ
-
Hive メタストアや AWS Glue などのメタストア
注意
ストレージとして AWS S3 を選択した場合、メタストアとして HMS また は AWS Glue を使用できます。他のストレージシステムを選択した場合、メタストアとして HMS のみを使用できます。
制限事項
1 つのUnified catalogは、単一のストレージシステムと単一のメタストアサービスとのみ統合をサポートします。したがって、StarRocks と統合したいすべてのデータソースが同じストレージシステムとメタストアサービスを使用していることを確認してください。
使用上の注意
-
サポートされているファイル形式とデータ型を理解するために、Hive カタログ、Iceberg カタログ、Hudi カタログ、Delta Lake カタログ、Paimon カタログ、および Kudu カタログ の「使用上の注意」セクションを参照してください。
-
形式固有の操作は特定のテーブル形式にのみサポートされています。例えば、CREATE TABLE と DROP TABLE は Hive と Iceberg のみでサポートされており、REFRESH EXTERNAL TABLE は Hive と Hudi のみでサポートされています。
Unified catalog内で CREATE TABLE ステートメントを使用してテーブルを作成する場合、
ENGINEパラメータを使用してテーブル形式(Hive または Iceberg)を指定してください。
統合準備
Unified catalogを作成する前に、StarRocks クラスターが統合データソースのストレージシステムとメタストアと統合できることを確認してください。
AWS IAM
ストレージとして AWS S3 を使用する場合、またはメタストアとして AWS Glue を使用する場合、適切な認証方法を選択し、StarRocks クラスターが関連する AWS クラウドリソースにアクセスできるように必要な準備を行ってください。詳細については、AWS リソースへの認証 - 準備を参照してください。
HDFS
ストレージとして HDFS を選択した場合、StarRocks クラスターを次のように構成してください:
- (オプション)HDFS クラスターおよび Hive メタストアにアクセスするためのユーザー名を設定します。デフォルトでは、StarRocks は HDFS クラスターおよび Hive メタストアにアクセスするために FE および BE または CN プロセスのユーザー名を使用します。また、各 FE の fe/conf/hadoop_env.sh ファイルの先頭、および各 BE または CN の be/conf/hadoop_env.sh ファイルの先頭に
export HADOOP_USER_NAME="<user_name>"を追加することでユーザー名を設定することもできます。これらのファイルでユーザー名を設定した後、各 FE および各 BE または CN を再起動してパラメータ設定を有効にします。StarRocks クラスターごとに 1 つのユーザー名のみを設定できます。 - データをクエリする際、StarRocks クラスターの FEs および BEs または CNs は HDFS クライアントを使用して HDFS クラスターにアクセスします。ほとんどの場合、その目的を達成するために StarRocks クラスターを構成する必要はなく、StarRocks はデフォルトの設定を使用して HDFS クライアントを起動します。次の状況でのみ StarRocks クラスターを構成する必要があります:
- HDFS クラスターで高可用性 (HA) が有効になっている場合:HDFS クラスターの hdfs-site.xml ファイルを各 FE の $FE_HOME/conf パス、および各 BE または CN の $BE_HOME/conf パスに追加します。
- HDFS クラスターで View File System (ViewFs) が有効になっている場合:HDFS クラスターの core-site.xml ファ イルを各 FE の $FE_HOME/conf パス、および各 BE または CN の $BE_HOME/conf パスに追加します。
注意
クエリを送信した際に不明なホストを示すエラーが返された場合、HDFS クラスターのノードのホスト名と IP アドレスのマッピングを /etc/hosts パスに追加する必要があります。
Kerberos 認証
HDFS クラスターまたは Hive メタストアで Kerberos 認証が有効になっている場合、StarRocks クラスターを次のように構成してください:
- 各 FE および各 BE または CN で
kinit -kt keytab_path principalコマンドを実行して、Key Distribution Center (KDC) から Ticket Granting Ticket (TGT) を取得します。このコマンドを実行するには、HDFS クラスターおよび Hive メタストアにアクセスする権限が必要です。このコマンドを使用して KDC にアクセスすることは時間に敏感です。したがって、このコマンドを定期的に実行するために cron を使用する必要があります。 - 各 FE の $FE_HOME/conf/fe.conf ファイル、および各 BE または CN の $BE_HOME/conf/be.conf ファイルに
JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf"を追加します。この例では、/etc/krb5.confは krb5.conf ファイルの保存パスです。必要に応じてパスを変更できます。
Unified catalogの作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "unified",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams,
PaimonCatalogParams,
KuduCatalogParams
)
パラメータ
catalog_name
Unified catalogの名前。命名規則は次の通りです:
- 名前には文字、数字 (0-9)、およびアンダースコア (_) を含めることができます。文字で始める必要があります。
- 名前は大文字と小文字を区別し、長さは 1023 文字を超えてはなりません。
comment
Unified catalogの説明。このパラメータはオプションです。
type
データソースのタイプ。値を unified に設定します。
MetastoreParams
StarRocks がメタストアと統合する方法に関する一連のパラメータ。
Hive メタストア
統合データソースのメタストアとして Hive メタストアを選択した場合、MetastoreParams を次のように構成します:
"unified.metastore.type" = "hive",
"hive.metastore.uris" = "<hive_metastore_uri>"
注意
データをクエリする前に、Hive メタストアノードのホスト名と IP アドレスのマッピングを /etc/hosts パスに追加する必要があります。そうしないと、クエリを開始する際に StarRocks が Hive メタストアにアクセスできない可能性があります。
次の表は、MetastoreParams で構成する必要があるパラメータを説明しています。
| パラメータ | 必須 | 説明 |
|---|---|---|
| unified.metastore.type | はい | 統合データソースに使用するメタストアのタイプ。値を hive に設定します。 |
| hive.metastore.uris | はい | Hive メタストアの URI。形式:thrift://<metastore_IP_address>:<metastore_port>。高可用性 (HA) が Hive メタストアに対して有効になっている場合、複数のメタストア URI を指定し、カンマ (,) で区切ることができます。例:"thrift://<metastore_IP_address_1>:<metastore_port_1>,thrift://<metastore_IP_address_2>:<metastore_port_2>,thrift://<metastore_IP_address_3>:<metastore_port_3>"。 |
AWS Glue
データソースのメタストアとして AWS Glue を選択した場合(ストレージとして AWS S3 を選択した場合にのみサポート)、次のいずれかのアクションを実行します:
-
インスタンスプロファイルベースの認証方法を選択する場合、
MetastoreParamsを次のように構成します:"unified.metastore.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.region" = "<aws_glue_region>" -
アサムドロールベースの認証方法を選択する場合、
MetastoreParamsを次のように構成します:"unified.metastore.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.iam_role_arn" = "<iam_role_arn>",
"aws.glue.region" = "<aws_glue_region>" -
IAM ユーザーベースの認証方法を選択する場合、
MetastoreParamsを次のように構成します:"unified.metastore.type" = "glue",
"aws.glue.use_instance_profile" = "false",
"aws.glue.access_key" = "<iam_user_access_key>",
"aws.glue.secret_key" = "<iam_user_secret_key>",
"aws.glue.region" = "<aws_s3_region>"
次の表は、MetastoreParams で構成する必要があるパラメータを説明しています。
| パラメータ | 必須 | 説明 |
|---|---|---|
| unified.metastore.type | はい | 統合データソースに使用するメタストアのタイプ。値を glue に設定します。 |
| aws.glue.use_instance_profile | はい | インスタンスプロファイルベースの認証方法とアサムドロールベースの認証を有効にするかどうかを指定します。 有効な値: true および false。デフォルト値:false。 |
| aws.glue.iam_role_arn | いいえ | AWS Glue Data Catalog に対する権限を持つ IAM ロールの ARN。AWS Glue にアクセスするためにアサムドロールベースの認証方法を使用する場合、このパラメータを指定する必要があります。 |
| aws.glue.region | はい | AWS Glue Data Catalog が存在するリージョン。例:us-west-1。 |
| aws.glue.access_key | いいえ | AWS IAM ユーザーのアクセスキー。AWS Glue にアクセスするために IAM ユーザーベースの認証方法を使用する場合、このパラメータを指定する必要があります。 |
| aws.glue.secret_key | いいえ | AWS IAM ユーザーのシークレットキー。AWS Glue にアクセスするために IAM ユーザーベースの認証方法を使用する場合、このパラメータを指定する必要があります。 |
AWS Glue にアクセスするための認証方法の選択方法および AWS IAM コンソールでのアクセス制御ポリシーの構成方法については、AWS Glue へのアクセスのための認証パラメータを参照してください。
StorageCredentialParams
StarRocks がストレージシステムと統合する方法に関する一連のパラメータ。このパラメータ セットはオプションです。
ストレージとして HDFS を使用する場合、StorageCredentialParams を構成する必要はありません。
ストレージとして AWS S3、その他の S3 互換ストレージシステム、Microsoft Azure Storage、または Google GCS を使用する場合、StorageCredentialParams を構成する必要があります。
AWS S3
ストレージとして AWS S3 を選択した場合、次のいずれかのアクションを実行します:
-
インスタンスプロファイルベースの認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "<aws_s3_region>" -
アサムドロールベースの認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "<iam_role_arn>",
"aws.s3.region" = "<aws_s3_region>" -
IAM ユーザーベースの認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"aws.s3.use_instance_profile" = "false",
"aws.s3.access_key" = "<iam_user_access_key>",
"aws.s3.secret_key" = "<iam_user_secret_key>",
"aws.s3.region" = "<aws_s3_region>"
次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。
| パラメータ | 必須 | 説明 |
|---|---|---|
| aws.s3.use_instance_profile | はい | インスタンスプロファイルベースの認証方法とアサムドロールベースの認証方法を有効にするかどうかを指定します。 有効な値: true および false。デフォルト値:false。 |
| aws.s3.iam_role_arn | いいえ | AWS S3 バケットに対する権限を持つ IAM ロールの ARN。AWS S3 にアクセスするためにアサムドロールベースの認証方法を使用する場合、このパラメータを指定する必要があります。 |
| aws.s3.region | はい | AWS S3 バケットが存在するリージョン。例:us-west-1。 |
| aws.s3.access_key | いいえ | IAM ユーザーのアクセスキー。IAM ユーザーベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。 |
| aws.s3.secret_key | いいえ | IAM ユーザーのシークレットキー。IAM ユーザーベースの認証方法を使用して AWS S3 にアクセスする場合、このパラメータを指定する必要があります。 |
AWS S3 にアクセスするための認証方法の選択方法および AWS IAM コンソールでのアクセス制御ポリシーの構成方法については、AWS S3 へのアクセスのための認証パラメータを参照してください。
S3 互換ストレージシステム
S3 互換ストレージシステム(例:MinIO)をストレージとして選択した場合、StorageCredentialParams を次のように構成して、統合を成功させます:
"aws.s3.enable_ssl" = "false",
"aws.s3.enable_path_style_access" = "true",
"aws.s3.endpoint" = "<s3_endpoint>",
"aws.s3.access_key" = "<iam_user_access_key>",
"aws.s3.secret_key" = "<iam_user_secret_key>"
次の表は、StorageCredentialParams で構成する必要があるパラメータを説明しています。
| パラメータ | 必須 | 説明 |
|---|---|---|
| aws.s3.enable_ssl | はい | SSL 接続を有効にするかどうかを指定します。 有効な値: true および false。デフォルト値:true。 |
| aws.s3.enable_path_style_access | はい | パススタイルアクセスを有効にするかどうかを指定します。 有効な値: true および false。デフォルト値:false。MinIO の場合、値を true に設定す る必要があります。パススタイル URL は次の形式を使用します: https://s3.<region_code>.amazonaws.com/<bucket_name>/<key_name>。例えば、US West (Oregon) リージョンに DOC-EXAMPLE-BUCKET1 というバケットを作成し、そのバケット内の alice.jpg オブジェクトにアクセスしたい場合、次のパススタイル URL を使用できます:https://s3.us-west-2.amazonaws.com/DOC-EXAMPLE-BUCKET1/alice.jpg。 |
| aws.s3.endpoint | はい | AWS S3 の代わりに S3 互換ストレージシステムに接続するために使用されるエンドポイント。 |
| aws.s3.access_key | はい | IAM ユーザーのアクセスキー。 |
| aws.s3.secret_key | はい | IAM ユーザーのシークレットキー。 |
Microsoft Azure Storage
Azure Blob Storage
Blob Storage をストレージとして選択した場合、次のいずれかのアクションを実行します:
-
共有キー認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.shared_key" = "<storage_account_shared_key>"次の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ 必須 説明 azure.blob.storage_account はい Blob Storage アカウントのユーザー名。 azure.blob.shared_key はい Blob Storage アカウントの共有キー。 -
SAS トークン認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"azure.blob.storage_account" = "<storage_account_name>",
"azure.blob.container" = "<container_name>",
"azure.blob.sas_token" = "<storage_account_SAS_token>"次の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ 必須 説明 azure.blob.storage_account はい Blob Storage アカウントのユーザー名。 azure.blob.container はい データを保存する Blob コンテナの名前。 azure.blob.sas_token はい Blob Storage アカウントにアクセスするために使用される SAS トークン。
Azure Data Lake Storage Gen2
Data Lake Storage Gen2 をストレージとして選択した場合、次のいずれかのアクションを実行します:
-
マネージド ID 認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"azure.adls2.oauth2_use_managed_identity" = "true",
"azure.adls2.oauth2_tenant_id" = "<service_principal_tenant_id>",
"azure.adls2.oauth2_client_id" = "<service_client_id>"次の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ 必須 説明 azure.adls2.oauth2_use_managed_identity はい マネージド ID 認証方法を有効にするかどうかを指定します。値を trueに設定します。azure.adls2.oauth2_tenant_id はい アクセスしたいデータのテナント ID。 azure.adls2.oauth2_client_id はい マネージド ID のクライアント(アプリケーション)ID。 -
共有キー認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"azure.adls2.storage_account" = "<storage_account_name>",
"azure.adls2.shared_key" = "<storage_account_shared_key>"次の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ 必須 説明 azure.adls2.storage_account はい Data Lake Storage Gen2 ストレージアカウントのユーザー名。 azure.adls2.shared_key はい Data Lake Storage Gen2 ストレージアカウントの共有キー。 -
サービスプリンシパル認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"azure.adls2.oauth2_client_id" = "<service_client_id>",
"azure.adls2.oauth2_client_secret" = "<service_principal_client_secret>",
"azure.adls2.oauth2_client_endpoint" = "<service_principal_client_endpoint>"次の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ 必須 説明 azure.adls2.oauth2_client_id はい サービスプリンシパルのクライアント(アプリケーション)ID。 azure.adls2.oauth2_client_secret はい 作成された新しいクライアント(アプリケーション)シークレットの値。 azure.adls2.oauth2_client_endpoint はい サービスプリンシパルまたはアプリケーションの OAuth 2.0 トークンエンドポイント(v1)。
Azure Data Lake Storage Gen1
Data Lake Storage Gen1 をストレージとして選択した場合、次のいずれかのアクションを実行します:
-
マネージドサービス ID 認証方法を選択する場合、
StorageCredentialParamsを 次のように構成します:"azure.adls1.use_managed_service_identity" = "true"次の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ 必須 説明 azure.adls1.use_managed_service_identity はい マネージドサービス ID 認証方法を有効にするかどうかを指定します。値を trueに設定します。 -
サービスプリンシパル認証方法を選択する場合、
StorageCredentialParamsを次のように構成します:"azure.adls1.oauth2_client_id" = "<application_client_id>",
"azure.adls1.oauth2_credential" = "<application_client_credential>",
"azure.adls1.oauth2_endpoint" = "<OAuth_2.0_authorization_endpoint_v2>"次の表は、
StorageCredentialParamsで構成する必要があるパラメータを説明しています。パラメータ 必須 説明 azure.adls1.oauth2_client_id はい サービスプリンシパルのクライアント(アプリケーション)ID。 azure.adls1.oauth2_credential はい 作成された新しいクライアント(アプリケーション)シークレットの値。 azure.adls1.oauth2_endpoint はい サービスプリンシパルまたはアプリケーションの OAuth 2.0 トークンエンドポイント(v1)。