メインコンテンツまでスキップ
バージョン: 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キータブファイルパス
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キータブファイルパス。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.typekerberosに設定

  • 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である必要があります

  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 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

パラメータ名旧名称必須デフォルト説明
typeYesNoneカタログタイプ、Paimonの場合は paimon に固定
paimon.catalog.typeNofilesystemHiveMetaStoreを使用する場合は hms である必要があり、デフォルトはファイルシステムにメタデータを保存するための filesystem
warehouseYesNonePaimon warehouse パス

  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環境において、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 にアクセスするには、少なくとも以下のポートが開いている必要があります:

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