Проблема «Буферный пул уничтожен» обнаружена в Apache Flink Operator flapMap - PullRequest
0 голосов
/ 02 апреля 2019

Когда я пытаюсь записать в коллекцию OUT в операторе flatMap, я получаю исключение недопустимого состояния (только при высокой нагрузке): Пул буферов уничтожен Что я делаю здесь неправильно?Когда flink выдает ошибку пула буферов?

java.lang.RuntimeException:  Buffer pool is destroyed.

    at org.apache.flink.streaming.runtime.io.RecordWriterOutput.pushToRecordWriter(RecordWriterOutput.java:110)
    at org.apache.flink.streaming.runtime.io.RecordWriterOutput.collect(RecordWriterOutput.java:89)
    at org.apache.flink.streaming.runtime.io.RecordWriterOutput.collect(RecordWriterOutput.java:45)
    at org.apache.flink.streaming.api.operators.AbstractStreamOperator$CountingOutput.collect(AbstractStreamOperator.java:718)
    at org.apache.flink.streaming.api.operators.AbstractStreamOperator$CountingOutput.collect(AbstractStreamOperator.java:696)
    at org.apache.flink.streaming.api.operators.TimestampedCollector.collect(TimestampedCollector.java:51)

..........
Caused by: java.lang.IllegalStateException:  Buffer pool is destroyed.
    at org.apache.flink.util.Preconditions.checkState(Preconditions.java:179)
    at org.apache.flink.runtime.io.network.buffer.BufferBuilder.append(BufferBuilder.java:79)
    at org.apache.flink.runtime.io.network.api.serialization.SpanningRecordSerializer.copyToBufferBuilder(SpanningRecordSerializer.java:95)
    at org.apache.flink.runtime.io.network.api.writer.RecordWriter.copyFromSerializerToTargetChannel(RecordWriter.java:150)
    at org.apache.flink.runtime.io.network.api.writer.RecordWriter.emit(RecordWriter.java:128)
    at org.apache.flink.runtime.io.network.api.writer.RecordWriter.emit(RecordWriter.java:101)
    at org.apache.flink.streaming.runtime.io.StreamRecordWriter.emit(StreamRecordWriter.java:81)
    at org.apache.flink.streaming.runtime.io.RecordWriterOutput.pushToRecordWriter(RecordWriterOutput.java:107)```

1 Ответ

1 голос
/ 02 апреля 2019

Что такое пул буферов?

Пул буферов - это пул фиксированных размеров экземпляров сегментов памяти для сетевого стека, что означает, что вы помещаете в него сегменты при отправке данных иизвлекать из него сегменты при приеме по сети.

Почему он уничтожен?

Пул буферов уничтожается из-за выключения сетевого окружения.

Почему отключается NetworkEnvironment?

Это могут быть конкретные обстоятельства, в которых я не очень уверен.Я предлагаю вам прочитать больше журналов выше этого исключения из пула буферов.

...