Hive Metastore
このドキュメントでは、CREATE CATALOG文を通じてHive MetaStoreサービスに接続し、アクセスする際にサポートされるすべてのパラメータについて説明します。
サポートされるCatalogタイプ
| Catalogタイプ | タイプ識別子(type) | 説明 |
|---|---|---|
| Hive | hms | Hive Metastoreに接続するためのCatalog |
| Iceberg | iceberg | Icebergテーブル形式用のCatalog |
| Paimon | paimon | Apache Paimonテーブル形式用のCatalog |
共通パラメータの概要
以下のパラメータは、異なるCatalogタイプに共通です。
| パラメータ名 | 旧名 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| hive.metastore.uris | はい | なし | Hive MetastoreのURIアドレス。カンマで区切られた複数のURIをサポート。例:'hive.metastore.uris' = 'thrift://127.0.0.1:9083'、'hive.metastore.uris' = 'thrift://127.0.0.1:9083,thrift://127.0.0.1:9084' | |
| hive.metastore.authentication.type | hadoop.security.authentication | いいえ | simple | Metastore認証方式:simple(デフォルト)またはkerberosをサポート。バージョン3.0以前では、認証方式はhadoop.security.authenticationプロパティによって決定されていました。バージョン3.1以降では、Hive Metastore認証方式を個別に指定できます。例:'hive.metastore.authentication.type' = 'kerberos' |
| hive.metastore.service.principal | hive.metastore.kerberos.principal | いいえ | 空 | Hiveサーバープリンシパル。_HOSTプレースホルダーをサポート。例:'hive.metastore.service.principal' = 'hive/_HOST@EXAMPLE.COM' |
| hive.metastore.client.principal | hadoop.kerberos.principal | いいえ | 空 | DorisがHive MetaStoreサービスに接続するために使用するKerberosプリンシパル。 |
| hive.metastore.client.keytab | hadoop.kerberos.keytab | いいえ | 空 | Kerberosキータブファイルパス |
| hive.metastore.username | hadoop.username | いいえ | hadoop | Hive Metastoreユーザー名。非Kerberosモードで使用 |
| hive.conf.resources | いいえ | 空 | hive-site.xml設定ファイルパス。相対パスを使用 | |
| hive.metastore.client.socket.timeout | いいえ | デフォルト値は、FE設定パラメータのhive_metastore_client_timeout_secondで、デフォルトは10秒 | このパラメータはバージョン4.0.3以降でサポートされます。Hive Metastore Clientコネクション経由でメタデータにアクセスする際のタイムアウト。メタデータが大きい場合(例:パーティションが多い場合)、この値を増やすことができます。 |
注意:
バージョン3.1.0以前では、旧名を使用してください。
必須パラメータ
hive.metastore.uris:Hive MetastoreのURIアドレスを指定する必要があります
オプションパラメータ
-
hive.metastore.authentication.type:認証方式。デフォルトはsimple、オプションでkerberos -
hive.metastore.service.principal:Hive MetaStoreサービスのKerberosプリンシパル。Kerberos認証を使用する際に指定が必要です。 -
hive.metastore.client.principal:DorisがHive MetaStoreサービスに接続するために使用するKerberosプリンシパル。Kerberos認証を使用する際に指定が必要です。 -
hive.metastore.client.keytab:Kerberosキータブファイルパス。Kerberos認証を使用する際に指定が必要です。 -
hive.metastore.username:Hive MetaStoreサービスに接続するためのユーザー名。非Kerberosモードで使用。デフォルトはhadoopです。 -
hive.conf.resources:hive-site.xml設定ファイルパス。Hive Metastoreサービスに接続するための設定を設定ファイルから読み取る必要がある場合に使用されます。
認証方式
Simple認証
simple:非Kerberosモード。Hive Metastoreサービスに直接接続します。
Kerberos認証
Kerberos認証を使用してHive Metastoreサービスに接続するには、以下のパラメータを設定してください:
-
hive.metastore.authentication.type:kerberosに設定 -
hive.metastore.service.principal:Hive MetaStoreサービスのKerberosプリンシパル -
hive.metastore.client.principal:DorisがHive MetaStoreサービスに接続するために使用するKerberosプリンシパル -
hive.metastore.client.keytab:Kerberosキータブファイルパス
'hive.metastore.authentication.type' = 'kerberos',
'hive.metastore.service.principal' = 'hive/_HOST@EXAMPLE.COM',
'hive.metastore.client.principal' = 'hive/doris.cluster@EXAMPLE.COM',
'hive.metastore.client.keytab' = '/etc/security/keytabs/hive.keytab'
Kerberos認証が有効なHive MetaStoreサービスを使用する場合は、すべてのFEノードに同じkeytabファイルが存在し、Dorisプロセスを実行するユーザーがkeytabファイルに対する読み取り権限を持ち、krb5設定ファイルが適切に設定されていることを確認してください。
一般的なKerberos設定の問題とベストプラクティスについては、Kerberosを参照してください。
設定ファイルパラメータ
hive.conf.resources
設定ファイルを通じてHive Metastoreサービスへの接続設定を読み取る必要がある場合は、hive.conf.resourcesパラメータを設定してconfファイルのパスを指定できます。
注意:
hive.conf.resourcesパラメータは相対パスのみサポートしており、絶対パスは使用しないでください。デフォルトパスは${DORIS_HOME}/plugins/hadoop_conf/ディレクトリ配下です。fe.confのhadoop_config_dirを変更することで他のディレクトリを指定できます。
例:'hive.conf.resources' = 'hms-1/hive-site.xml'
Catalogタイプ固有のデータ
以下のパラメータは、共通パラメータに加えて各Catalogタイプ固有のものです。
Hive Catalog
| パラメータ名 | 旧名称 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| type | はい | なし | Catalogタイプ、Hive Catalogの場合はhmsに固定 | |
| hive.metastore.type | いいえ | 'hms' | メタデータCatalogタイプ、Hive Metastoreの場合はhmsに固定、HiveMetaStore使用時はhmsである必要があります |
例
-
認証なしのHive Metastoreをメタデータサービスとして使用し、S3ストレージサービスを使用するHive Catalogを作成する。
CREATE CATALOG hive_hms_s3_test_catalog PROPERTIES (
'type' = 'hms',
'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
's3.access_key' = 'S3_ACCESS_KEY',
's3.secret_key' = 'S3_SECRET_KEY',
's3.region' = 's3.ap-east-1.amazonaws.com'
); -
Kerberos認証が有効化されたHive Metastoreをメタデータサービスとして使用し、S3ストレージサービスを使用してHive Catalogを作成します。
CREATE CATALOG hive_hms_on_oss_kerberos_new_catalog PROPERTIES (
'type' = 'hms',
'hive.metastore.uris' = 'thrift://127.0.0.1:9583',
'hive.metastore.client.principal'='hive/presto-master.docker.cluster@LABS.TERADATA.COM',
'hive.metastore.client.keytab' = '/mnt/keytabs/keytabs/hive-presto-master.keytab',
'hive.metastore.service.principal' = 'hive/hadoop-master@LABS.TERADATA.COM',
'hive.metastore.authentication.type'='kerberos',
'hadoop.security.auth_to_local' = 'RULE:[2:\$1@\$0](.*@LABS.TERADATA.COM)s/@.*//
RULE:[2:\$1@\$0](.*@OTHERLABS.TERADATA.COM)s/@.*//
RULE:[2:\$1@\$0](.*@OTHERREALM.COM)s/@.*//
DEFAULT',
'oss.access_key' = 'OSS_ACCESS_KEY',
'oss.secret_key' = 'OSS_SECRET_KEY',
'oss.endpoint' = 'oss-cn-beijing.aliyuncs.com'
);
Iceberg Catalog
| Parameter Name | Former Name | Required | Default | Description |
|---|---|---|---|---|
| type | Yes | None | Catalog タイプ、Iceberg の場合は iceberg に固定 | |
| iceberg.catalog.type | No | None | Metadata Catalog タイプ、Hive Metastore の場合は hms に固定、HiveMetaStore 使用時は hms である必要があります | |
| warehouse | No | None | Iceberg warehouse パス |
例
-
Hive Metastore をメタデータサービスとして、S3 をストレージサービスとして使用する Iceberg Catalog を作成します。
CREATE CATALOG iceberg_hms_s3_test_catalog PROPERTIES (
'type' = 'iceberg',
'iceberg.catalog.type' = 'hms',
'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
'warehouse' = 's3://doris/iceberg_warehouse/',
's3.access_key' = 'S3_ACCESS_KEY',
's3.secret_key' = 'S3_SECRET_KEY',
's3.region' = 's3.ap-east-1.amazonaws.com'
); -
マルチKerberos環境において、S3ストレージサービスを使用し、Kerberos認証を有効にしたHive Metastoreをメタデータサービスとして使用するIceberg Catalogを作成します。
CREATE CATALOG IF NOT EXISTS iceberg_hms_on_oss_kerberos_new_catalog PROPERTIES (
'type' = 'iceberg',
'iceberg.catalog.type' = 'hms',
'hive.metastore.uris' = 'thrift://127.0.0.1:9583',
'warehouse' = 'oss://doris/iceberg_warehouse/',
'hive.metastore.client.principal'='hive/presto-master.docker.cluster@LABS.TERADATA.COM',
'hive.metastore.client.keytab' = '/mnt/keytabs/keytabs/hive-presto-master.keytab',
'hive.metastore.service.principal' = 'hive/hadoop-master@LABS.TERADATA.COM',
'hive.metastore.authentication.type'='kerberos',
'hadoop.security.auth_to_local' = 'RULE:[2:\$1@\$0](.*@LABS.TERADATA.COM)s/@.*//
RULE:[2:\$1@\$0](.*@OTHERLABS.TERADATA.COM)s/@.*//
RULE:[2:\$1@\$0](.*@OTHERREALM.COM)s/@.*//
DEFAULT',
'oss.access_key' = 'OSS_ACCESS_KEY',
'oss.secret_key' = 'OSS_SECRET_KEY',
'oss.endpoint' = 'oss-cn-beijing.aliyuncs.com'
);
Paimon Catalog
| パラメータ名 | 旧名称 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
| type | Yes | None | カタログタイプ、Paimonの場合は paimon に固定 | |
| paimon.catalog.type | No | filesystem | HiveMetaStoreを使用する場合は hms である必要があり、デフォルトはファイルシステムにメタデータを保存するための filesystem | |
| warehouse | Yes | None | Paimon warehouse パス |
例
-
Hive Metastoreをメタデータサービスとして使用し、S3ストレージサービスを使ったPaimon Catalogを作成します。
CREATE CATALOG IF NOT EXISTS paimon_hms_s3_test_catalog PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'hms',
'hive.metastore.uris' = 'thrift://127.0.0.1:9383',
'warehouse' = 's3://doris/paimon_warehouse/',
's3.access_key' = 'S3_ACCESS_KEY',
's3.secret_key' = 'S3_SECRET_KEY',
's3.region' = 's3.ap-east-1.amazonaws.com'
); -
マルチKerberos環境において、Kerberos認証が有効なHive MetastoreをメタデータサービスとしてS3ストレージサービスと共に使用するPaimon Catalogを作成します。
CREATE CATALOG IF NOT EXISTS paimon_hms_on_oss_kerberos_new_catalog PROPERTIES (
'type' = 'paimon',
'paimon.catalog.type' = 'hms',
'hive.metastore.uris' = 'thrift://127.0.0.1:9583',
'warehouse' = 's3://doris/iceberg_warehouse/',
'hive.metastore.client.principal'='hive/presto-master.docker.cluster@LABS.TERADATA.COM',
'hive.metastore.client.keytab' = '/mnt/keytabs/keytabs/hive-presto-master.keytab',
'hive.metastore.service.principal' = 'hive/hadoop-master@LABS.TERADATA.COM',
'hive.metastore.authentication.type'='kerberos',
'hadoop.security.auth_to_local' = 'RULE:[2:\$1@\$0](.*@LABS.TERADATA.COM)s/@.*//
RULE:[2:\$1@\$0](.*@OTHERLABS.TERADATA.COM)s/@.*//
RULE:[2:\$1@\$0](.*@OTHERREALM.COM)s/@.*//
DEFAULT',
'oss.access_key' = 'OSS_ACCESS_KEY',
'oss.secret_key' = 'OSS_SECRET_KEY',
'oss.endpoint' = 'oss-cn-beijing.aliyuncs.com'
);
HMS アクセスポート要件
Doris が HMS にアクセスするには、少なくとも以下のポートが開いている必要があります:
| Service | Port Purpose | Default Port | Protocol |
|---|---|---|---|
| Hive Metastore | Thrift (metadata access) | 9083 | TCP |
注意事項:
- ポートは
hive-site.xmlでカスタマイズできます。常に実際の設定に従ってください。 - Kerberos 認証が有効な場合、Doris から Kerberos KDC へのネットワーク接続を確保してください。KDC は、KDC 設定でカスタマイズされていない限り、デフォルトで TCP ポート 88 をリッスンします。
よくある質問 (FAQ)
-
Q1: hive-site.xml は必須ですか?
いいえ、設定を読み込む必要がある場合にのみ使用されます。
-
Q2: keytab ファイルはすべてのノードに存在する必要がありますか?
はい、すべての FE ノードが指定されたパスにアクセスできる必要があります。
-
Q3: ライトバック機能、つまり Doris で Hive/Iceberg データベース/テーブルを作成する際に注意すべき点は何ですか?
テーブルの作成にはストレージ側でのメタデータ操作、つまりストレージシステムへのアクセスが伴うため、Hive MetaStore サービスのサーバー側では、S3、OSS などのストレージサービスのアクセスパラメータなど、対応するストレージパラメータを設定する必要があります。オブジェクトストレージを基盤ストレージシステムとして使用する場合、書き込み先のバケットが設定された Region と一致することを確認してください。