Georgi Varbanov
04/14/2025, 12:04 PMGeorgi Varbanov
04/14/2025, 12:25 PMMayank
Mayank
Georgi Varbanov
04/14/2025, 3:18 PMapiVersion: v1
kind: ConfigMap
metadata:
name: pinot-controller-config
labels:
app: pinot
component: controller
data:
pinot-controller.conf: |-
# Controller host and port
controller.host=pinot-controller
controller.port=9000
pinot.set.instance.id.to.hostname=true
# Cluster name
controller.helix.cluster.name=pinot-quickstart
# ZooKeeper configuration
controller.zk.str=pinot-zookeeper:2181
# External access
controller.access.protocols.http.port=9000
# Controller periodic tasks
controller.task.scheduler.enabled=true
controller.task.frequencyPeriod=5m
# System resources
controller.data.dir=/var/pinot/controller/data
controller.local.temp.dir=/tmp/pinot-controller-tmp
controller.deleted.segments.retentionInDays=1
# Optional: Throttling config for high volume
controller.realtime.segment.commit.timeoutMs=120000
# tuning
controller.allow.hlc.tables=false
controller.enable.split.commit=true
apiVersion: v1
kind: ConfigMap
metadata:
name: pinot-broker-config
labels:
app: pinot
component: broker
data:
pinot-broker.conf: |-
pinot.broker.client.queryPort=8099
pinot.broker.routing.table.builder.class=random
pinot.set.instance.id.to.hostname=true
pinot.query.server.port=7321
pinot.query.runner.port=7732
pinot.broker.adaptive.server.selector.enable.stats.collection=true
pinot.broker.adaptive.server.selector.type=HYBRID
pinot.broker.netty.native.transports.enabled=true
apiVersion: v1
kind: ConfigMap
metadata:
name: pinot-server-config
labels:
app: pinot
component: server
data:
pinot-server.conf: |-
pinot.server.netty.port=8098
pinot.server.adminapi.port=8097
pinot.server.instance.dataDir=/var/pinot/server/data/index
pinot.server.instance.segmentTarDir=/var/pinot/server/data/segment
pinot.set.instance.id.to.hostname=true
pinot.server.instance.realtime.alloc.offheap=true
pinot.query.server.port=7321
pinot.query.runner.port=7732
realtime.segment.serverUploadToDeepStore = true
pinot.server.instance.segment.stream.download.untar=true
pinot.server.instance.segment.stream.download.untar.rate.limit.bytes.per.sec=100000000
pinot.server.instance.table.level.max.parallel.segment.downloads=4
pinot.server.instance.enable.split.commit=true
pinot.server.netty.native.transports.enabled=true
1. With the above config, how would deep store work, because i don't think i understand it completely. From what i have seen/tested, if no deep store factory class is setup in controller/server(realtime.segment.serverUploadToDeepStore=true) then the "deepstore" is the actual volume that is attached to the k8s pod that runs with it?
2. The above config was used during Testing on DEV and with each performance tune(based on the docs/github issues) i have seen some improvements, do you have any other suggestions that i can use in terms of infrastructure setup?
3. Do you have recommended version of zookeeper to run or whatever is fine? We run 3.5.5, which is quite old, but want to ask if there is some corellation
PS: i have updated the cluster as you suggested. As for indexes and timestamps we have this covered already, we have not yet used replica groups as on dev we had around 8-9 times smaller infra and only 25m rows, while still achieving over 1200 QPS, but will need to dig into it.Georgi Varbanov
04/14/2025, 3:26 PM"realtime.segment.flush.threshold.segment.rows": "0",
"realtime.segment.flush.threshold.time": "24h",
"realtime.segment.flush.threshold.segment.size": "500M",
"realtime.segment.flush.threshold.size": "0"