Discovery
The Stackable Operator for Apache Hive publishes a discovery ConfigMap, which exposes a client configuration bundle that allows access to the Apache Hive cluster.
The bundle includes an Apache Thrift connection string to access the Hive Metastore service. This string may be used by other operators or tools to configure their products with access to Hive. Access is limited to services within the same Kubernetes cluster.
Example
Given the following Hive cluster:
apiVersion: hive.stackable.tech/v1alpha1
kind: HiveCluster
metadata:
name: {clusterName} (1)
namespace: {namespace} (2)
spec:
clusterConfig:
database:
connString: jdbc:postgresql://postgresql:5432/hive
credentialsSecret: hive-credentials
dbType: postgres
metastore:
roleGroups:
default: (3)
replicas: 2
---
apiVersion: v1
kind: Secret
metadata:
name: hive-credentials
type: Opaque
stringData:
username: hive
password: hive
1 | The name of the Hive cluster, which is also the name of the created discovery ConfigMap. |
2 | The namespace of the discovery ConfigMap. |
3 | A role group name of the metastore role. |
The resulting discovery ConfigMap is {namespace}/{clusterName}
.
Contents
Internal access
The {namespace}/{clusterName}
discovery ConfigMap contains the following fields where {clusterName}
represents the name, {namespace}
the namespace of the cluster and {roleGroup}
a role group of the metastore
role:
HIVE
Contains the thrift protocol connection string for the Hive metastore service:
thrift://{clusterName}.{namespace}.svc.cluster.local:9083
Using the Hive metastore in high availability mode (replicas > 1) does not work with Derby but instead requires a properly configured database like PostgreSQL or MySQL. |
External access
If spec.clusterConfig.listenerClass
is set to external-unstable
an additional ConfigMap is generated to expose external access to the cluster. This discovery ConfigMap is reachable via {namespace}/{clusterName}-nodeport
.
Contains the thrift protocol connection string for the Hive metastore NodePort service:
thrift://<node-ip>:<nodeport> thrift://<other-node-ip>:<nodeport>