6.3. Overview of Presto on Kubernetes

Releases & Software

Presto 0.312-e

Starburst Presto on Kubernetes is based on version 312e. 312e includes many additional features and patches to the prestosql/presto version 312. Notably, Presto 312e, includes the state of the art cost based optimizer for fast query results.

For more information on Presto 312e, refer to our documentation.

Deployment Options

Google Kubernetes Engine is certified by Starburst to work with Presto on Kubernetes, for more information on running Presto on Google Kubernetes Engine, refer to Presto on Google Kubernetes Engine. Additionally Starburst Presto on Kubernetes can be used on any modern Kubernetes cluster implementations (both on-prem and in the cloud). It is also possible to run Presto Kubernetes on Minikube for testing or development purposes.

Presto Cloud Architecture

General Components and Descriptions

Starburst Presto on Kubernetes consists of various components and Kubernetes resources that form a Presto Kubernetes cluster. The following terms describe each component of the Presto Kubernetes architecture in more detail:

Presto Kubernetes Custom Resource Definition

Presto Kubernetes Custom Resource Definition (CRD) defines resources of Presto type within a Kubernetes namespace. For more information on Kubernetes Custom Resources, refer to Custom Resources.

Presto Kubernetes resources

Presto Kubernetes resources are instances of Presto Kubernetes Custom Resource. Each instance of a Presto Kubernetes resource represents a Presto cluster. Presto Kubernetes resource contains various parameters that specify Presto, connector and Kubernetes properties. For more information on Presto Kubernetes resource, refer to Presto Kubernetes resource.

Presto Operator

Presto Operator is a Kubernetes Operator pod that orchestrates Presto clusters. Presto Operator continuously monitors Presto Kubernetes resources. Presto Operator will create or remove Presto clusters when Presto Kubernetes resource is created or removed. Any changes to existing Presto Kubernetes resource will be picked up by the Presto Operator which will update the corresponding Presto cluster accordingly. For more information on Kubernetes Operators, refer to Kubernetes Operators.

Presto service account

The account used by Presto Operator to make Kubernetes API calls.

Presto service role

The role that is bound to Presto service account. The role must have enough privileges to manage Presto clusters.

Presto Coordinator

A Presto pod that is responsible for parsing the SQL queries as well as analyzing, planning, and scheduling their execution. Presto Coordinator pods are part of Kubernetes Deployment that keeps at most a single Presto Coordinator pod running at the same time. Presto Coordinator pod will be automatically recreated on Presto Coordinator failure or unresponsiveness thus providing basic Presto high availability.

Presto Worker

Presto pods that are responsible for performing particular query tasks. Number of Presto workers can be adjusted statically by specifying the worker.count property (see Presto Kubernetes resource) or automatically via Kubernetes Horizontal Pod Autoscaler.

Presto Coordinator Service

A Kubernetes Service that delegates requests to the Presto Coordinator pod. Presto Coordinator Service is the frontend of a Presto cluster which accepts queries and exposes the Presto Coordinator GUI.

Presto Network Policy

A Kubernetes Network Policy that only allows inbound traffic to Presto Worker pods from the Presto Coordinator pod. Support for Kubernetes Network Policies might need to be enabled in your Kubernetes cluster.

Metastore

A Hive Metastore pod that is running when Presto cluster is configured to use an internal Metastore.

PostgreSQL

A PostgreSQL pod that is running when Presto cluster is configured to use an internal Metastore with an internal ephemeral Metastore database.

Labels

All Presto Kubernetes components are labelled so that it’s easy to write selectors in order to match them. Those labels are:

  • instance: CLUSTER_NAME_UUIDCLUSTER_NAME_UUID is the cluster name with a unique suffix. CLUSTER_NAME_UUID can be overridden via the nameOverride Presto Kubernetes resource property.
  • role: ROLE_NAMEROLE_NAME can be one of:
    • catalogs – specifies catalogs ConfigMap
    • configuration – specifies configuration ConfigMap
    • coordinator – specifies Presto Coordinator related components
    • worker – specifies Presto Worker related components
    • hive-metastore – specifies Hive Metastore related components
    • hive-postgresql – specifies PostgreSQL (for Hive Metastore) related components
    • prometheus-coordinator – specifies Prometheus metrics endpoint for Presto Coordinator
    • prometheus-worker – specifies Prometheus metrics endpoint for Presto Workers

License

Graceful worker scaledown and autoscaling support requires a valid Starburst license. To obtain such a license, please contact hello@starburstdata.com.

Presto Support Options

At Starburst, the Presto company, we pride ourselves on being the Presto experts. Need support for your organization’s production and development environments for Presto? We have got you covered with 24x7 support as part of our Enterprise Subscription.

Contact us for more information about our support offerings and explore our other services on our website.