メインコンテンツまでスキップ
バージョン: 4.x

Hive Metastore

この文書では、CREATE CATALOG文を通じてHive MetaStoreサービスに接続してアクセスする際のすべてのサポートされているパラメータについて説明します。

サポートされているCatalogタイプ​

Catalogタイプタイプ識別子 (type)説明
HivehmsHive Metastoreに接続するためのCatalog
IcebergicebergIcebergテーブル形式のためのCatalog
PaimonpaimonApache 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.typehadoop.security.authenticationいいえsimpleMetastore認証方式: simple(デフォルト)またはkerberosをサポート。バージョン3.0以前では、認証方式はhadoop.security.authenticationプロパティによって決定されていました。バージョン3.1以降、Hive Metastore認証方式を個別に指定できます。例: 'hive.metastore.authentication.type' = 'kerberos'
hive.metastore.service.principalhive.metastore.kerberos.principalいいえ空Hiveサーバープリンシパル、_HOSTプレースホルダーをサポート。例: 'hive.metastore.service.principal' = 'hive/_HOST@EXAMPLE.COM'
hive.metastore.client.principalhadoop.kerberos.principalいいえ空DorisがHive MetaStoreサービスに接続するために使用するKerberosプリンシパル。
hive.metastore.client.keytabhadoop.kerberos.keytabいいえ空Kerberos keytabファイルパス
hive.metastore.usernamehadoop.usernameいいえhadoopHive 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 keytabファイルパス、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 keytabファイルパス

'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サービスを使用する場合、同じkeytabファイルがすべてのFEノードに存在すること、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である必要があります

例​

  1. 認証なしの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'
    );
  2. 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 NameFormer NameRequiredDefaultDescription
typeYesNoneCatalog タイプ、Iceberg の場合は iceberg で固定
iceberg.catalog.typeNoNoneMetadata Catalog タイプ、Hive Metastore の場合は hms で固定、HiveMetaStore 使用時は hms である必要があります
warehouseNoNoneIceberg warehouse パス

例​

  1. 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'
    );
  2. マルチKerberos環境において、S3ストレージサービスを使用し、Kerberos認証を有効にしたHive Metastoreをメタデータサービスとして使用するIcebergカタログを作成します。

    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はいNoneカタログタイプ、Paimonの場合paimonに固定
paimon.catalog.typeいいえfilesystemHiveMetaStoreを使用する場合はhmsである必要があります、デフォルトはファイルシステムにメタデータを保存するfilesystemです
warehouseはいNonePaimonウェアハウスパス

例​

  1. 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'
    );
  2. Kerberos認証が有効なHive Metastoreをメタデータサービスとして使用し、S3ストレージサービスを備えたマルチKerberos環境で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にアクセスするには、少なくとも以下のポートが開放されている必要があります:

ServicePort PurposeDefault PortProtocol
Hive MetastoreThrift (metadata access)9083TCP

注意事項:

  • ポートは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と一致することを確認してください。