Delta Lake catalog
Delta Lake カタログは、取り込みなしで Delta Lake からデータをクエリすることを可能にする external catalog です。Delta Lake クラスターでの SQL ワークロー ドを成功させるためには、CelerData クラスターが Delta Lake クラスターのストレージシステムとメタストアにアクセスできる必要があります。CelerData は次のストレージシステムとメタストアをサポートしています。
-
AWS S3 のようなオブジェクトストレージ
-
Hive メタストア、AWS Glue、Databricks Unity Catalog のようなメタストア
ストレージとして AWS S3 を選択した場合、メタストアとして HMS または AWS Glue を使用できます。他のストレージシステムを選択した場合、メタストアとして HMS のみを使用できます。
使用上の注意
- StarRocks がサポートする Delta Lake のファイル形式は Parquet です。Parquet ファイルは次の圧縮形式をサポートしています: SNAPPY, LZ4, ZSTD, GZIP, NO_COMPRESSION。
- StarRocks がサポートしていない Delta Lake のデータ型は MAP と STRUCT です。
統合準備
Delta Lake catalog を作成する前に、StarRocks クラスターが Delta Lake クラスターのストレージシステムとメタストアと統合できることを確認してください。
AWS IAM
Delta Lake クラスターが AWS S3 をストレージとして使用している場合、または AWS Glue をメタストアとして使用している場合、適切な認証方法を選択し、関連する AWS クラウドリソースにアクセスできるように必要な準備を行ってください。
推奨される認証方法は以下の通りです:
- インスタンスプロファイル
- アサインされたロール
- IAM ユーザー
上記の3つの認証方法の中で、インスタンスプロファイルが最も広く使用されています。
詳細については、 Preparation for authentication in AWS IAM を参照してください。
HDFS
HDFS をストレージとして選択した場合、StarRocks クラスターを次のように構成します:
-
(オプション) HDFS クラスターと Hive メタストアにアクセスするために使用されるユーザー名を設定します。デフォルトでは、StarRocks は FE と BE または CN プロセスのユーザー名を使用して HDFS クラスターと Hive メタストアにアクセスします。また、各 FE の fe/conf/hadoop_env.sh ファイルの先頭と、各 BE または CN の be/conf/hadoop_env.sh または cn/conf/hadoop_env.sh ファイルの先頭に
export HADOOP_USER_NAME="<user_name>"
を追加することでユーザー名を設定することもできます。これらのファイルにユーザー名を設定した後、各 FE と各 BE または CN を再起動して、パラメータ設定を有効にします。StarRocks クラスターごとに1つのユーザー名しか設定できません。 -
Delta Lake データをクエリする際、StarRocks クラスターの FEs と BEs または CNs は HDFS クライアントを使用して HDFS クラスターにアクセスします。ほとんどの場合、その目的を達成するために StarRocks クラスターを構成する必要はなく、StarRocks はデフォルトの構成を使用して HDFS クライアントを起動します。次の状況でのみ StarRocks クラスターを構成する必要があります:
- 高可用性 (HA) が HDFS クラスターで有効になっている場合: HDFS クラスターの hdfs-site.xml ファイルを各 FE の $FE_HOME/conf パスと、各 BE または CN の $BE_HOME/conf または $CN_HOME/conf パスに追加します。
- View File System (ViewFs) が HDFS クラスターで有効になっている場合: HDFS クラスターの core-site.xml ファイルを各 FE の $FE_HOME/conf パスと、各 BE または CN の $BE_HOME/conf または $CN_HOME/conf パスに追加します。
注記クエリを送信した際に不明なホストを示すエラーが返された場合、HDFS クラスターのノードのホスト名と IP アドレスのマッピングを /etc/hosts パスに追加する必要があります。
Kerberos 認証
Kerberos 認証が HDFS クラスターまたは Hive メタストアで有効になっている場合、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 または $CN_HOME/conf/cn.conf ファイルに
JAVA_OPTS="-Djava.security.krb5.conf=/etc/krb5.conf"
を追加します。この例では、/etc/krb5.conf
は krb5.conf ファイルの保存パスです。必要に応じてパスを変更できます。
Delta Lake catalog の作成
構文
CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
"type" = "deltalake",
MetastoreParams,
StorageCredentialParams,
MetadataUpdateParams
)
パラメータ
catalog_name
Delta Lake catalog の名前です。命名規則は次の通りです:
- 名前には文字、数字 (0-9)、およびアンダースコア (_) を含めることができます。文字で始める必要があります。
- 名前は大文字と小文字を区別し、長さは1023文字を超えてはなりません。
comment
Delta Lake catalog の説明です。このパラメータはオプションです。
type
データソースのタイプです。値を deltalake
に設定します。
MetastoreParams
StarRocks がデータソースのメタストアと統合する方法に関する一連のパラメータです。
Hive メタストア
データソースのメタストアとして Hive メタストアを選択した場合、MetastoreParams
を次のように構成します:
"hive.metastore.type" = "hive",
"hive.metastore.uris" = "<hive_metastore_uri>"
Delta Lake データをクエリする前に、Hive メタストアノードのホスト名と IP アドレスのマッピングを /etc/hosts
パスに追加する必要があります。そうしないと、クエリを開始したときに StarRocks が Hive メタストアにアクセスできない可能性があります。
次の表は、MetastoreParams
で構成する必要があるパラメータを説明しています。
Parameter | Required | Description |
---|---|---|
hive.metastore.type | Yes | Delta Lake クラスターで使用するメタストアのタイプです。値を hive に設定します。 |
hive.metastore.uris | Yes | 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
を次のように構成します:"hive.metastore.type" = "glue",
"aws.glue.use_instance_profile" = "true",
"aws.glue.region" = "<aws_glue_region>" -
アサインされたロールベースの認証方法を選択する場合、
MetastoreParams
を次のように構成します:"hive.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
を次のように構成します:"hive.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
で構成する必要があるパラメータを説明しています。
Parameter | Required | Description |
---|---|---|
hive.metastore.type | Yes | Delta Lake クラスターで使用するメタストアのタイプです。値を glue に設定します。 |
aws.glue.use_instance_profile | Yes | インスタンスプロファイルベースの認証方法とアサインされたロールベースの認証方法を有効にするかどうかを指定します。有効な値: true と false 。デフォルト値: false 。 |
aws.glue.iam_role_arn | No | AWS Glue Data Catalog に対する権限を持つ IAM ロールの ARN です。アサインされたロールベースの認証方法を 使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。 |
aws.glue.region | Yes | AWS Glue Data Catalog が存在するリージョンです。例: us-west-1 。 |
aws.glue.access_key | No | AWS IAM ユーザーのアクセスキーです。IAM ユーザーベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。 |
aws.glue.secret_key | No | AWS IAM ユーザーのシークレットキーです。IAM ユーザーベースの認証方法を使用して AWS Glue にアクセスする場合、このパラメータを指定する必要があります。 |
AWS Glue にアクセスするための認証方法の選択方法と AWS IAM コンソールでのアクセス制御ポリシーの構成方法については、 Authentication parameters for accessing AWS Glue を参照してください。
Databricks Unity Catalog
データソースのメタストアとして Databricks Unity Catalog を選択する場合、MetastoreParams
を次のように設定します。
"hive.metastore.type" = "unity",
"databricks.host"= "https://<host>.cloud.databricks.com",
"databricks.token" = "<token>",
"databricks.catalog.name" = "<catalog_name>",
パラメータ | 必須 | 説明 |
---|---|---|
hive.metastore.type | はい | Delta Lake クラスターで使用するメタストアのタイプです。値を unity に設定します。 |
databricks.host | はい | Databricks クラスターのホストです。例: https://abcd1234.cloud.databricks.com 。詳細な手順については、Databricks personal access token authentication を参照してください。 |
databricks.token | はい | Unity Catalog メタストアにアクセスするためのトークンです。詳細な手順については、Databricks personal access token authentication を参照してください。 |
databricks.catalog.name | はい | Unity Catalog の名前です。 |