Flink: память закончилась исключение
Я настроил кластер Flink со следующей конфигурацией:
Количество диспетчеров задач: 2
Когда я запускаю алгоритм связанных компонентов (org.apache.flink.graph.library.ConnectedComponents
) на графе с 4 миллионами ребер и 1750000 вершин с параллелизмом 2 я получаю это исключение:
java.lang.RuntimeException: Ошибка при получении отсортированного ввода: Поток "Поток чтения SortMerger" прерван из-за исключительной ситуации: запись превышает максимальный размер буфера сортировки (текущий максимум: 87949312 байт). в org.apache.flink.runtime.operators.sort.UnatellSortMerger.getIterator(UnatellSortMerger.java:619) в org.apache.flink.runtime.operators.BatchTask.getInput(BatchTask.java:1108) в org.apache.flink.runtime.operators.NoOpDriver.run(NoOpDriver.java:82) в org.apache.flink.runtime.operators.BatchTask.run(BatchTask.java:503) в org.apache.flink.runtime.operators.BatchTask.invoke(BatchTask.java:368) в org.apache.flink.runtime.taskmanager.Task.run(Task.java:703) в java.lang.Thread.run(Thread.java:748). Вызывается: java.io.IOException: Поток "Поток чтения SortMerger" прерван из-за исключения: запись превышает максимальный размер буфера сортировки (текущий максимум: 87949312 байт). at org.apache.flink.runtime.operators.sort.UnatellSortMerger$ThreadBase.run(UnatellSortMerger.java:800) Причина: java.io.IOException: запись превышает максимальный размер буфера сортировки (текущий максимум: 87949312 байт).). по адресу org.apache.flink.runtime.operators.sort.UnatellSortMerger$ReadingThread.go(UniletSortMerger.java:955) по адресу org.apache.flink.runtime.operators.sort.UnatellSortMerger$ThreadBase.run(UnatellSortMerger.java:796)
Согласно моей конфигурации, я не знаю, почему это говорит The record exceeds the maximum size of a sort buffer (current maximum:87949312 bytes)
пока достаточно сегментов памяти.
Кто-нибудь знает, как решить эту проблему?