Running Pinot in Kubernetes
Pinot quick start in Kubernetes
1. Prerequisites
2. Setting up a Pinot cluster in Kubernetes
Before continuing, please make sure that you've downloaded Apache Pinot. The scripts for the setup in this guide can be found in our open source project on GitHub.
The scripts can be found in the Pinot source at ./incubator-pinot/kubernetes/helm
# checkout pinot
git clone https://github.com/apache/incubator-pinot.git
cd incubator-pinot/kubernetes/helm2.1 Start Pinot with Helm
Pinot repo has pre-packaged HelmCharts for Pinot and Presto. Helm Repo index file is here.
helm repo add pinot https://raw.githubusercontent.com/apache/incubator-pinot/master/kubernetes/helm
kubectl create ns pinot-quickstart
helm install pinot pinot/pinot \
-n pinot-quickstart \
--set cluster.name=pinot \
--set server.replicaCount=22.1.1 Update helm dependency
helm dependency update2.1.2 Start Pinot with Helm
For Helm v2.12.1
If your Kubernetes cluster is recently provisioned, ensure Helm is initialized by running:
helm init --service-account tillerThen deploy a new HA Pinot cluster using the following command:
helm install --namespace "pinot-quickstart" --name "pinot" .For Helm v3.0.0
kubectl create ns pinot-quickstart
helm install -n pinot-quickstart pinot .2.1.3 Troubleshooting (For helm v2.12.1)
Error: Please run the below command if encountering the following issue:
Error: could not find tiller.Resolution:
kubectl -n kube-system delete deployment tiller-deploy
kubectl -n kube-system delete service/tiller-deploy
helm init --service-account tillerError: Please run the command below if encountering a permission issue:
Error: release pinot failed: namespaces "pinot-quickstart" is forbidden: User "system:serviceaccount:kube-system:default" cannot get resource "namespaces" in API group "" in the namespace "pinot-quickstart"
Resolution:
2.2 Check Pinot deployment status
3. Load data into Pinot using Kafka
3.1 Bring up a Kafka cluster for real-time data ingestion
3.2 Check Kafka deployment status
Ensure the Kafka deployment is ready before executing the scripts in the following next steps.
3.3 Create Kafka topics
The scripts below will create two Kafka topics for data ingestion:
3.4 Load data into Kafka and create Pinot schema/tables
The script below will deploy 3 batch jobs.
Ingest 19492 JSON messages to Kafka topic
flights-realtimeat a speed of 1 msg/secIngest 19492 Avro messages to Kafka topic
flights-realtime-avroat a speed of 1 msg/secUpload Pinot schema
airlineStatsCreate Pinot table
airlineStatsto ingest data from JSON encoded Kafka topicflights-realtimeCreate Pinot table
airlineStatsAvroto ingest data from Avro encoded Kafka topicflights-realtime-avro
4. Query using Pinot Data Explorer
4.1 Pinot Data Explorer
Please use the script below to perform local port-forwarding, which will also open Pinot query console in your default web browser.
This script can be found in the Pinot source at ./incubator-pinot/kubernetes/helm
5. Using Superset to query Pinot
5.1 Bring up Superset
5.2 (First time) Set up Admin account
5.3 (First time) Init Superset
5.4 Load Demo data source
5.5 Access Superset UI
You can run below command to navigate superset in your browser with the previous admin credential.
You can open the imported dashboard by clicking Dashboards banner and then click on AirlineStats.
6. Access Pinot using Presto
6.1 Deploy Presto using Pinot plugin
You can run the command below to deploy a customized Presto with Pinot plugin installed.
6.2 Query Presto using Presto CLI
Once Presto is deployed, you can run the command below.
6.3 Sample queries to execute
List all catalogs
List All tables
Show schema
Count total documents
7. Deleting the Pinot cluster in Kubernetes
Last updated
Was this helpful?

