Slackbot
12/01/2022, 9:04 AMAdam Whitter
12/01/2022, 9:37 AMcactus
12/01/2022, 9:51 AMapache-druid-24.0.1/bin/start-single-server-small . I'll go search the other logs to see if there's anything notable and once I've copied those files then I'll try to run the 56th & 57th file to see if the issue reoccurs.cactus
12/01/2022, 10:07 AM2022-11-30T22:43:50,235 WARN [Coordinator-Exec--0] org.apache.druid.server.coordinator.rules.LoadRule - No available [_default_tier] servers or node capacity to assign segment [trips_xaa_2014-04-26T00:00:00.000Z_2014-04-27T00:00:00Z_2022-11-29T11:30:27.958Z]! Current replication: [[_default_tier:1/2]]cactus
12/01/2022, 10:08 AMAdam Whitter
12/01/2022, 12:36 PMGian Merlino
12/01/2022, 4:44 PMGian Merlino
12/01/2022, 4:45 PMlocal input sourceGian Merlino
12/01/2022, 4:55 PMGian Merlino
12/01/2022, 4:55 PMAdam Whitter
12/01/2022, 5:27 PMBrandon Tan
12/02/2022, 2:03 AMbin/start-single-server-small) for the NYC cab data for MSQE and the data set is ingested fully with no errors.
So I concur with what Adam and Gian has stated about http timeoutcactus
12/02/2022, 4:53 PMcactus
12/05/2022, 9:16 AMbatch index_parallel import from local files, with the filter trips_xa*.csv.gz . Every other setting is left at its default.
2022-12-04T21:19:48,994 ERROR [task-runner-0-priority-0] org.apache.druid.indexing.common.task.IndexTask - Encountered exception in BUILD_SEGMENTS.
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Direct buffer memory
at org.apache.druid.indexing.common.task.IndexTask.generateAndPublishSegments(IndexTask.java:1035) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.common.task.IndexTask.runTask(IndexTask.java:526) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.common.task.AbstractBatchIndexTask.run(AbstractBatchIndexTask.java:187) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.common.task.batch.parallel.ParallelIndexSupervisorTask.runSequential(ParallelIndexSupervisorTask.java:1199) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.common.task.batch.parallel.ParallelIndexSupervisorTask.runTask(ParallelIndexSupervisorTask.java:532) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.common.task.AbstractBatchIndexTask.run(AbstractBatchIndexTask.java:187) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:477) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:449) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[?:?]
at java.lang.Thread.run(Thread.java:829) ~[?:?]
Caused by: java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Direct buffer memory
at com.google.common.util.concurrent.AbstractFuture$Sync.getValue(AbstractFuture.java:299) ~[guava-16.0.1.jar:?]
at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:286) ~[guava-16.0.1.jar:?]
at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116) ~[guava-16.0.1.jar:?]
at org.apache.druid.segment.realtime.appenderator.BatchAppenderatorDriver.pushAndClear(BatchAppenderatorDriver.java:149) ~[druid-server-24.0.1.jar:24.0.1]
at org.apache.druid.segment.realtime.appenderator.BatchAppenderatorDriver.pushAllAndClear(BatchAppenderatorDriver.java:133) ~[druid-server-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.common.task.InputSourceProcessor.process(InputSourceProcessor.java:122) ~[druid-indexing-service-24.0.1.jar:24.0.1]
at org.apache.druid.indexing.common.task.IndexTask.generateAndPublishSegments(IndexTask.java:922) ~[druid-indexing-service-24.0.1.jar:24.0.1]
... 11 more
Caused by: java.lang.OutOfMemoryError: Direct buffer memory
at java.nio.Bits.reserveMemory(Bits.java:175) ~[?:?]
at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:118) ~[?:?]
at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:317) ~[?:?]
at org.apache.druid.segment.CompressedPools$4.get(CompressedPools.java:102) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.CompressedPools$4.get(CompressedPools.java:95) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.collections.StupidPool.makeObjectWithHandler(StupidPool.java:170) ~[druid-core-24.0.1.jar:24.0.1]
at org.apache.druid.collections.StupidPool.take(StupidPool.java:153) ~[druid-core-24.0.1.jar:24.0.1]
at org.apache.druid.segment.CompressedPools.getByteBuf(CompressedPools.java:110) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.data.DecompressingByteBufferObjectStrategy.fromByteBuffer(DecompressingByteBufferObjectStrategy.java:49) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.data.DecompressingByteBufferObjectStrategy.fromByteBuffer(DecompressingByteBufferObjectStrategy.java:28) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.data.GenericIndexed$BufferIndexed.get(GenericIndexed.java:483) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.data.BlockLayoutColumnarDoublesSupplier$BlockLayoutColumnarDoubles.loadBuffer(BlockLayoutColumnarDoublesSupplier.java:173) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.data.BlockLayoutColumnarDoublesSupplier$1.get(BlockLayoutColumnarDoublesSupplier.java:68) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.data.ColumnarDoubles$1HistoricalDoubleColumnSelector.getDouble(ColumnarDoubles.java:79) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.selector.settable.SettableDoubleColumnValueSelector.setValueFrom(SettableDoubleColumnValueSelector.java:36) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.QueryableIndexIndexableAdapter$RowIteratorImpl.setRowPointerValues(QueryableIndexIndexableAdapter.java:322) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.QueryableIndexIndexableAdapter$RowIteratorImpl.moveToNext(QueryableIndexIndexableAdapter.java:301) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.ForwardingRowIterator.moveToNext(ForwardingRowIterator.java:62) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.MergingRowIterator.lambda$new$0(MergingRowIterator.java:84) ~[druid-processing-24.0.1.jar:24.0.1]
at java.util.stream.IntPipeline$9$1.accept(IntPipeline.java:368) ~[?:?]
at java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:104) ~[?:?]
at java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:699) ~[?:?]
at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) ~[?:?]
at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) ~[?:?]
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:550) ~[?:?]
at java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260) ~[?:?]
at java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:517) ~[?:?]
at org.apache.druid.segment.MergingRowIterator.<init>(MergingRowIterator.java:92) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.IndexMergerV9.makeMergedTimeAndDimsIterator(IndexMergerV9.java:1360) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.IndexMergerV9.makeIndexFiles(IndexMergerV9.java:293) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.IndexMergerV9.merge(IndexMergerV9.java:1303) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.IndexMergerV9.multiphaseMerge(IndexMergerV9.java:1120) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.IndexMergerV9.mergeQueryableIndex(IndexMergerV9.java:1062) ~[druid-processing-24.0.1.jar:24.0.1]
at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.mergeAndPush(AppenderatorImpl.java:923) ~[druid-server-24.0.1.jar:24.0.1]
at org.apache.druid.segment.realtime.appenderator.AppenderatorImpl.lambda$push$1(AppenderatorImpl.java:784) ~[druid-server-24.0.1.jar:24.0.1]
at com.google.common.util.concurrent.Futures$1.apply(Futures.java:713) ~[guava-16.0.1.jar:?]
at com.google.common.util.concurrent.Futures$ChainingListenableFuture.run(Futures.java:861) ~[guava-16.0.1.jar:?]
... 3 moreGian Merlino
12/06/2022, 7:48 AMGian Merlino
12/06/2022, 7:50 AMbin/start-single-server-large or something like that)Gian Merlino
12/06/2022, 7:51 AMGian Merlino
12/06/2022, 8:19 AMcactus
12/06/2022, 8:52 AMstart-single-server-small and fits the definition - 8vCPU, 64GB RAMcactus
12/06/2022, 8:53 AMcactus
12/06/2022, 8:55 AMcactus
12/06/2022, 8:56 AM.<http://csv.tz|csv.tz> files)Gian Merlino
12/06/2022, 9:08 AMbin/start-single-server-small, with 2 tasks, on a machine with 64 GB RAMGian Merlino
12/06/2022, 9:09 AMOutOfMemoryError: Direct buffer memory or do you see other ones too?Gian Merlino
12/06/2022, 9:17 AMcactus
12/06/2022, 10:05 AMcactus
12/06/2022, 10:07 AMAdam Whitter
12/06/2022, 10:18 AMAdam Whitter
12/06/2022, 10:20 AMcactus
12/06/2022, 10:22 AMcactus
12/06/2022, 10:24 AMQuery -> Connect External Data route, although since hitting that timeout error at the top of the thread, I've since been using the index_parallel batch loading method instead. I have the ingestion spec to hand if you would find that convenientGian Merlino
12/06/2022, 4:01 PMGian Merlino
12/06/2022, 4:01 PMGian Merlino
12/06/2022, 4:02 PMGian Merlino
12/06/2022, 4:03 PMcactus
12/06/2022, 4:42 PMcactus
12/06/2022, 4:43 PMGian Merlino
12/06/2022, 5:11 PMcactus
12/06/2022, 6:05 PMcactus
12/06/2022, 6:08 PMcactus
12/06/2022, 6:11 PMcactus
12/06/2022, 6:22 PMGian Merlino
12/07/2022, 3:50 AMGian Merlino
12/07/2022, 3:50 AMGian Merlino
12/07/2022, 3:51 AMGian Merlino
12/07/2022, 3:53 AMGoodness me you are too kind to give me such detailed and targeted help!no problem, as you can tell we're very motivated to make the batch ingest experience rock solid β big part of that is people should not run into weird errors!
Gian Merlino
12/07/2022, 3:56 AMI'm only expecting queries during working hours and I'm expecting batches of input data only at the end of the day after everybody goes home, so it'd be great if I could sacrifice some query availability for the sake of ingestion performanceyeah, for this, you'd definitely want to adjust the builtin configs. try setting
druid.worker.capacity=9 (instead of default: 3) in conf/druid/single-server/small/middleManager/runtime.properties, and setting maxNumTasks: 9 with your SQL ingest (or setting "Max tasks: 9" in the web console). that should get you maxed out on the CPUs you haveGian Merlino
12/07/2022, 3:56 AMdruid.worker.capacity is you might run out of memory if it's raised too high. but i think 9 would be safe on the small config -- however if you run into memory issues after raising it, let us know since it may mean i did my math wrong πGian Merlino
12/07/2022, 3:57 AMAdam Whitter
12/07/2022, 9:51 AMcactus
12/07/2022, 12:18 PMAccessDeniedException . I also tried using a symlink to try and convince Java to delegate file access to bash, which can access the mounted bucket just fine - but alas Druid doesn't error but also can't see the files.
I've compromised by keeping just those 13 files on my local disk and seeing if I can get them ingested. I've also cranked up the config to try and use all 8 cores - I'll report back with results πcactus
12/07/2022, 8:20 PMcactus
12/07/2022, 8:21 PMAdam Whitter
12/08/2022, 11:15 AM