Slackbot
12/02/2022, 11:33 PMCristian Popa
12/02/2022, 11:42 PMCristian Popa
12/02/2022, 11:43 PMSamarth Jain
12/02/2022, 11:45 PMSamarth Jain
12/02/2022, 11:47 PMCristian Popa
12/02/2022, 11:48 PMCristian Popa
12/02/2022, 11:49 PMSamarth Jain
12/02/2022, 11:55 PMAlso this was not obvious to me at the beginning but it seems like for best results you need to match number of tasks to number of Kafka partitionsYeah, number of Kafka partitions is the upper bound. We had to resort to increasing our Kafka partitions because we were maxed out on number of ingestion tasks.
Gian Merlino
12/02/2022, 11:55 PMGian Merlino
12/03/2022, 12:01 AMGian Merlino
12/03/2022, 12:02 AMJRob
12/03/2022, 12:17 AMSamarth Jain
12/03/2022, 12:27 AMJRob
12/03/2022, 12:30 AM4-8 million events per secondHow many peons is that?
Nick M
12/04/2022, 11:28 AMJRob
12/05/2022, 4:22 PMJRob
12/05/2022, 4:23 PMSamarth Jain
12/05/2022, 9:46 PMmaxPendingPersists helps in controlling the amount of memory being used by ingestion tasks. It is mostly helpful BEFORE the handoff stage. Without maxPendingPersists configured to a reasonable value, we would see ingestion throttle.
@JRob - we were able to get to 4-8 million events per second using around 600 ingestion tasks. So roughly around 7500-10000 events per ingestion task per second. Could you tell more about the tuning parameters you have used?JRob
12/06/2022, 12:07 AMdruid.worker.capacity = 12
druid.indexer.runner.javaOpts=-server -Xms1g -Xmx2g -XX:MaxDirectMemorySize=3g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -XX:+ExitOnOutOfMemoryError -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
# Processing threads and buffers on Peons
druid.indexer.fork.property.druid.processing.numMergeBuffers=2
druid.indexer.fork.property.druid.processing.buffer.sizeBytes=268435456
druid.indexer.fork.property.druid.processing.numThreads=1
# Group By Query Tuning
druid.query.groupBy.maxMergingDictionarySize=1073741824
druid.query.groupBy.maxOnDiskStorage=107374182400
Notes:
• We set druid.worker.capacity slightly under # of cores to account for historicals running on same nodes
• We tested the peon memory allocation significantly and finally settled on 1 GB of Heap (expandable to 2 GB) and 3 GB of DirectMemory. Druid needs a lot of Direct Memory.
• I forgot how we settled on a merge buffer of 256 MB but it was a factor # of workers and available memory
• We allocated 1 GB to the merging dictionary for queries (we have some might large queries)
• Disk storage of 100 GB is sort of a catch-all for overflow; I would rather slow down a query than halt it altogether. Works of us but might need tuning if you have low disk space.
Our ingestion tasks typically use all of the default settings. We typically use HOURLY rollup. I only have one topic that needs more than one task; there I have it set to 10 tasks in order to ingest the nearly 300K events/second that topic generates.JRob
12/06/2022, 12:10 AMAleksej Jurcenko
12/07/2022, 3:47 AM