arrow-left

All pages
gitbookPowered by GitBook
1 of 1

Loading...

Cluster

Cluster is a set a nodes comprising of servers, brokers, controllers and minions.

Pinot cluster components

Pinot leverages Apache Helixarrow-up-right for cluster management. Helix is a cluster management framework to manage replicated, partitioned resources in a distributed system. Helix uses Zookeeper to store cluster state and metadata.

hashtag
Cluster components

Briefly, Helix divides nodes into three logical components based on their responsibilities

hashtag
Participant

The nodes that host distributed, partitioned resources

hashtag
Spectator

The nodes that observe the current state of each Participant and use that information to access the resources. Spectators are notified of state changes in the cluster (state of a participant, or that of a partition in a participant).

hashtag
Controller

The node that observes and controls the Participant nodes. It is responsible for coordinating all transitions in the cluster and ensuring that state constraints are satisfied while maintaining cluster stability.

Pinot Servers are modeled as Participants, more details about server nodes can be found in . Pinot Brokers are modeled as Spectators, more details about broker nodes can be found in . Pinot Controllers are modeled as Controllers, more details about controller nodes can be found in .

hashtag
Logical view

Another way to visualize the cluster is a logical view, wherein a cluster contains , tenants contain , and tables contain .

hashtag
Setup a Pinot Cluster

Typically, there is only cluster per environment/data center. There is no needed to create multiple Pinot clusters since Pinot supports the concept of . At LinkedIn, the largest Pinot cluster consists of 1000+ nodes.

To setup a Pinot cluster, we need to first start Zookeeper.

hashtag
0. Create a Network

Create an isolated bridge network in docker

hashtag
1. Start Zookeeper

Once we've started Zookeeper, we can start other components to join this cluster. If you're using docker, pull the latest apachepinot/pinot image.

hashtag
Pull pinot docker image

You can try out pre-built Pinot all-in-one docker image.

(Optional) You can also follow the instructions to build your own images.

To start other components to join the cluster

Explore your cluster via

Start Zookeeper in daemon.

hashtag
2. Start Zookeeper UI

Start ZKUIarrow-up-right to browse Zookeeper data at http://localhost:9090arrow-up-right.

Download Pinot Distribution using instructions in Downloadarrow-up-right

hashtag
1. Start Zookeeper

hashtag
2. Start Zooinspector

Install to view the data in Zookeeper, and connect to localhost:2181

Server
Broker
Controller
tenants
tables
segments
tenants
here
Start Controller
Start Broker
Start Server
Pinot Data Explorer
bin/pinot-admin.sh StartZookeeper -zkPort 2181
docker network create -d bridge pinot-demo
export PINOT_VERSION=0.3.0-SNAPSHOT
export PINOT_IMAGE=apachepinot/pinot:${PINOT_VERSION}
docker pull ${PINOT_IMAGE}
docker run \
    --network=pinot-demo \
    --name pinot-zookeeper \
    --restart always \
    -p 2181:2181 \
    -d zookeeper:3.5.6
docker run \
    --network pinot-demo --name=zkui \
    -p 9090:9090 \
    -e ZK_SERVER=pinot-zookeeper:2181 \
    -d qnib/plain-zkui:latest
zooinspectorarrow-up-right