外部 Hive メタストア¶
既存の Hive メタストアに含まれるテーブル定義に Denodo 組み込み MPP からアクセスする場合、その Hive メタストアを外部メタストアとして使用できます。
それには、手動で新しいカタログを定義します。具体的には、 presto/conf/catalog/ に presto/conf/catalog/external_hivems.properties などのプロパティファイルを作成します。ファイル名の external_hivems がカタログ名になります。
新しいカタログプロパティファイルは、以下に示すように、読み込むファイルまたはテーブルに応じてデフォルトで出荷されるカタログをコピーして作成できます。
Parquet ファイルの Hive テーブルにアクセスする場合、
hive.propertiesをコピーします。Delta Lake テーブルにアクセスする場合、
delta.propertiesをコピーします。Iceberg テーブルにアクセスする場合、
iceberg.propertiesをコピーします。
次に、 hive.metastore.uri プロパティに外部 Hive メタストアの URI を入力します。
通常、 hdfs-site.xml ファイルと core-site.xml ファイルは、 presto/conf/catalog に追加し、 hive.config.resources プロパティで参照します。
connector.name=hive-hadoop2
hive.metastore.uri=thrift://acme:9083
hive.config.resources=/opt/presto-server/etc/catalog/core-site-external.xml,/opt/presto-server/etc/catalog/hdfs-site-external.xml
# Bulk Data Load
hive.allow-drop-table=true
hive.non-managed-table-writes-enabled=true
# Avoids exceptions in partitioned tables
hive.parquet.use-column-names=true
Kerberos¶
外部 Hive メタストアが Kerberos 認証を使用している場合、カタログプロパティファイルに追加のプロパティを構成する必要があります。
hive.metastore.authentication.type=KERBEROS
hive.metastore.service.principal=hive/_HOST@REALM
hive.metastore.client.principal=primary@REALM
hive.metastore.client.keytab=/opt/secrets/xxx.keytab
これにより、組み込み MPP は、keytab hive.metastore.client.keytab を使用して Kerberos プリンシパル hive.metastore.client.principal として Hive メタストアに接続し、Hive メタストアの ID が hive.metastore.service.principal と一致することを確認します。
keytab ファイルは、 presto/secrets フォルダに配置する必要があります。また、 krb5.conf は、 presto/conf/catalog/ フォルダに配置する必要があります。さらに、以下の構成プロパティを values.yaml に追加します。
presto:
jvm:
additionalJVMConfig: [
-Djava.security.krb5.conf=/opt/presto-server/etc/catalog/krb5.conf
]
また、組み込み MPP が Kerberos 認証を使用して HDFS に接続する必要がある場合、カタログプロパティファイルで以下の追加プロパティを構成する必要があります。
hive.hdfs.authentication.type=KERBEROS
hive.hdfs.presto.principal=primary@REALM
hive.hdfs.presto.keytab=/opt/secrets/xxx.keytab
これにより、組み込み MPP は、keytab hive.hdfs.presto.keytab を使用して Kerberos プリンシパル hive.hdfs.presto.principal として HDFS に接続します。
keytab ファイルは、 presto/secrets フォルダに配置する必要があります。
hive.metastore.client.principal と hive.hdfs.presto.principal の両方に同じプリンシパルを使用する場合、そのプリンシパルが、Hive メタストアだけでなく、HDFS にもアクセスできることを確認します。そうしないと、 Permission denied エラーが発生します。
Hadoop クラスタで hadoop.rpc.protection=privacy が必要とされる場合、カタログプロパティファイルに、以下に示すもう 1 つのプロパティを追加する必要があります。
hive.hdfs.wire-encryption.enabled=true
詳細については、「 Hive セキュリティ構成 — Kerberos サポート 」を参照してください。
