Comment on page
Discover the tenant component of Apache Pinot, which facilitates efficient data isolation and resource management within Pinot clusters.
A tenant is a logical component defined as a group of server/broker nodes with the same Helix tag.
In order to support multi-tenancy, Pinot has first-class support for tenants. Every table is associated with a server tenant and a broker tenant. This controls the nodes that will be used by this table as servers and brokers. This allows all tables belonging to a particular use case to be grouped under a single tenant name.
The concept of tenants is very important when the multiple use cases are using Pinot and there is a need to provide quotas or some sort of isolation across tenants. For example, consider we have two tables
Table Bin the same Pinot cluster.
Defining tenants for tables
We can configure
Table Awith server tenant
Table Bwith server tenant
Tenant B. We can tag some of the server nodes for
Tenant Aand some for
Tenant B. This will ensure that segments of
Table Aonly reside on servers tagged with
Tenant A, and segment of
Table Bonly reside on servers tagged with
Tenant B. The same isolation can be achieved at the broker level, by configuring broker tenants to the tables.
Table isolation using tenants
No need to create separate clusters for every table or use case!
This section contains two main fields
server, which decide the tenants used for the broker and server components of this table.
In the above example:
- The table will be served by brokers that have been tagged as
- If this were an offline table, the offline segments for the table will be hosted in Pinot servers tagged in Helix as
- If this were a real-time table, the real-time segments (both consuming as well as completed ones) will be hosted in pinot servers tagged in Helix as
Here's a sample broker tenant config. This will create a broker tenant
sampleBrokerTenantby tagging three untagged broker nodes as
"tenantRole" : "BROKER",
"tenantName" : "sampleBrokerTenant",
"numberOfInstances" : 3
To create this tenant use the following command. The creation will fail if number of untagged broker nodes is less than
curl -i -X POST -H 'Content-Type: application/json' -d @sample-broker-tenant.json localhost:9000/tenants
Here's a sample server tenant config. This will create a server tenant
sampleServerTenantby tagging 1 untagged server node as
sampleServerTenant_OFFLINEand 1 untagged server node as
"tenantRole" : "SERVER",
"tenantName" : "sampleServerTenant",
"offlineInstances" : 1,
"realtimeInstances" : 1
To create this tenant use the following command. The creation will fail if number of untagged server nodes is less than
curl -i -X POST -H 'Content-Type: application/json' -d @sample-server-tenant.json localhost:9000/tenants