Skip to main content
Version 3.0

Integration — Hive Metastore

ChartVersion3.0.1TypeapplicationAppVersion4.0.0
CompatibilityKubernetes1.32+OpenShift4.19+Rancher2.10.x+

Integration overview

Hive Metastore serves as a central metadata repository for Hive and Iceberg tables in TDP. Other components — mainly Trino and Spark — connect to it via the Thrift protocol on port 9083.

Hive Metastore itself can use an external PostgreSQL (tdp-postgresql) as its own metadata database — see Hive Metastore Configuration.

Service address

The Hive Metastore service within the cluster follows the pattern:

<RELEASE_NAME>-metastore.<NAMESPACE>.svc.cluster.local:9083

Example with the default release tdp-hive-metastore-project in the tdp-project namespace:

tdp-hive-metastore-project-metastore.tdp-project.svc.cluster.local:9083

To verify that the service has active endpoints after deployment:

kubectl get endpoints -n tdp-project tdp-hive-metastore-project-metastore

The ENDPOINTS field should show the IP of the pod on port 9083. If it displays <none>, the service selector does not match the pod — check if the deployment is complete and if the pod labels match the Service selector.

Integration with Trino

Trino uses Hive Metastore as a catalog for Hive and Iceberg tables. The Metastore URI is configured in the Trino catalog definition:

trino:
additionalCatalogs:
hive: |
connector.name=hive
hive.metastore.uri=thrift://tdp-hive-metastore-project-metastore.<NAMESPACE>.svc.cluster.local:9083

iceberg: |
connector.name=iceberg
hive.metastore.uri=thrift://tdp-hive-metastore-project-metastore.<NAMESPACE>.svc.cluster.local:9083

Adjust the address according to the release name and namespace used in your environment.

Integration with Spark (Iceberg catalog)

For Spark jobs that access Iceberg tables via Hive Metastore as catalog:

maintenance:
spark:
config:
"spark.sql.catalog.iceberg": "org.apache.iceberg.spark.SparkCatalog"
"spark.sql.catalog.iceberg.type": "hive"
"spark.sql.catalog.iceberg.uri": "thrift://tdp-hive-metastore-project-metastore.<NAMESPACE>.svc.cluster.local:9083"

For the tdp-spark chart:

spark:
sparkConf:
"spark.sql.catalog.hive_metastore": "org.apache.spark.sql.hive.HiveExternalCatalog"
"spark.hadoop.hive.metastore.uris": "thrift://tdp-hive-metastore-project-metastore.<NAMESPACE>.svc.cluster.local:9083"

Check connectivity

To test whether Metastore is accessible from another pod in the cluster:

kubectl -n <NAMESPACE> port-forward svc/tdp-hive-metastore-project-metastore 9083:9083

With port-forward active, tools that support the Thrift protocol can connect to localhost:9083.

Troubleshooting

ProblemProbable causeSolution
Trino does not find tablesIncorrect Metastore URI in catalogCheck service name and namespace
Service endpoints <none>Service selector does not match podThe chart override should correct automatically — check if the deployment was completed
Thrift connection timeoutMetastore overloaded or pod not readyCheck PostgreSQL max_connections and pod status
Spark does not access Hive tableshive.metastore.uris not configuredCheck spark.hadoop.hive.metastore.uris in Spark values ​​

For the full list of parameters, use helm show values in the version of the chart you have installed.