First steps
After going through the Installation section and having installed all the operators, deploy a Hive metastore cluster and it’s dependencies. Afterward you can verify that it works.
Setup
Several requirements should have already been installed in the Installation guide:
-
PostgreSQL
-
MinIO for S3
S3Connection
In order to connect Hive to MinIO we need to create several files (or concat in one file).
An S3Connection to connect to MinIO (hive-minio-s3-connection.yaml
)
--- apiVersion: s3.stackable.tech/v1alpha1 kind: S3Connection metadata: name: minio spec: host: minio port: 9000 accessStyle: Path credentials: secretClass: hive-s3-secret-class
Credentials for the S3Connection to log into MinIO (hive-minio-credentials.yaml
)
--- apiVersion: v1 kind: Secret metadata: name: hive-s3-secret labels: secrets.stackable.tech/class: hive-s3-secret-class stringData: accessKey: hive secretKey: hivehive
A SecretClass for the credentials to the Minio. The credentials were defined in the installation of Minio (hive-minio-credentials-secret-class.yaml
)
--- apiVersion: secrets.stackable.tech/v1alpha1 kind: SecretClass metadata: name: hive-s3-secret-class spec: backend: k8sSearch: searchNamespace: pod: {}
And lastly the actual Apache Hive cluster definition (hive-postgres-s3.yaml
). Note how it references the minio
S3 object
--- apiVersion: hive.stackable.tech/v1alpha1 kind: HiveCluster metadata: name: hive-postgres-s3 spec: image: productVersion: 4.0.1 clusterConfig: database: connString: jdbc:postgresql://postgresql:5432/hive credentialsSecret: hive-credentials dbType: postgres s3: reference: minio metastore: roleGroups: default: replicas: 1 --- apiVersion: v1 kind: Secret metadata: name: hive-credentials type: Opaque stringData: username: hive password: hive
Once the files are created apply them to the cluster:
kubectl apply -f hive-minio-credentials.yaml kubectl apply -f hive-minio-credentials-secret-class.yaml kubectl apply -f hive-minio-s3-connection.yaml kubectl apply -f hive-postgres-s3.yaml
Verify that it works
Make sure that all the Pods in the StatefulSets are ready:
kubectl get statefulset
The output should show all pods ready:
NAME READY AGE hive-postgres-s3-metastore-default 1/1 48s
For further testing we recommend to use e.g. the python hive-metastore-client in order to e.g. create tables or connect a product like Trino via the Stackable Trino Operator.
What’s next
Have a look at the usage guide to find out more about the features of the Operator.