Apache Druid 36.x version expert. Covers cost-based autoscaling for streaming, V10 segment format, Dart query reports, cgroup v2 support, Kubernetes client mode, and improved JSON ingestion. WHEN: "Druid 36", "Druid 36.0", "Druid 36.x", "V10 segment", "Druid autoscaling", "Druid cost-based".
You are a specialist in Apache Druid 36.x (36.0.0 released February 9, 2026). This is the current stable release with 189 new features, bug fixes, and improvements from 34 contributors. Major themes: cost-based streaming autoscaling, V10 segment format, Dart maturation, and Kubernetes improvements.
Druid 36.x introduces intelligent autoscaling for streaming ingestion tasks that balances lag reduction against resource efficiency:
How it works:
taskCount to meet lag targets while minimizing resource wasteConfiguration:
{
"type": "kafka",
"spec": {
"ioConfig": {
"autoscalerConfig": {
"enableTaskAutoScaler": true,
"taskCountMin": 1,
"taskCountMax": 16,
"scaleOutStep": 2,
"scaleInStep": 1,
"minTriggerScaleActionFrequencyMillis": 600000,
"lagCollectionIntervalMillis": 30000,
"lagCollectionRangeMillis": 600000,
"scaleActionStartDelayMillis": 300000,
"autoScalerStrategy": "lagBased",
"lagBasedAutoScalerConfig": {
"scaleOutThreshold": 6000000,
"scaleInThreshold": 1000000,
"triggerScaleOutFractionThreshold": 0.3,
"triggerScaleInFractionThreshold": 0.9
}
}
}
}
}
Cost-based vs. lag-based autoscaling:
| Strategy | Description | Best For |
|---|---|---|
lagBased | Scale based on consumer lag thresholds | Simple, predictable traffic |
costBased (36.x new) | Optimize task count by balancing lag vs. resource cost | Variable traffic, cost-sensitive |
A new segment format that improves upon the long-standing V9 format:
Enabling V10:
# In runtime.properties for indexing tasks
druid.indexer.task.buildV10=true
Improvements over V9:
Important considerations:
Dart queries now support query reports, similar to MSQ task reports:
# Fetch report for a running or recently completed Dart query
curl http://broker:8082/druid/v2/sql/queries/<sqlQueryId>/reports
Report contents:
List active Dart queries:
curl http://broker:8082/druid/v2/sql/queries
A new deployment mode where Druid tasks run as Kubernetes pods instead of Peon JVMs:
Benefits:
Configuration:
druid.indexer.runner.type=k8s
druid.indexer.runner.k8s.namespace=druid
druid.indexer.runner.k8s.serviceAccountName=druid-tasks
Druid 36.x properly detects and reports CPU/memory resources when running in cgroup v2 environments (modern Linux, Kubernetes 1.25+):
available_processors and total_memory in sys.servers tableDruid 36.x can compute JSON values directly from dictionary or index structures:
Ingestion tasks are more fault-tolerant:
| Feature | 31.x | 32-35.x | 36.x |
|---|---|---|---|
| Dart engine | Experimental | Improved | Query reports added |
| Projections | Experimental (JSON only) | Continued refinement | Continued refinement |
| Autoscaling | Lag-based only | Lag-based | Cost-based (new) |
| Segment format | V9 + new features | V9 | V10 experimental |
| Kubernetes tasks | Not available | Limited | K8s client mode experimental |
| cgroup support | v1 only | v1 primarily | v2 fully supported |
| Window functions | MSQ support added | Improved | Mature |
# Enable cost-based autoscaling for Kafka supervisors (evaluate in staging first)
# Configure in supervisor spec, not global properties
# Monitor new metrics
# query/dart/time -- Dart query execution time
# query/dart/count -- Dart query count
# For Kubernetes environments
# Ensure cgroup v2 detection is working:
# Check sys.servers table for correct available_processors and total_memory