Ошибка слишком большого количества открытых файлов при чтении из каталога

#apache-flink

#apache-flink

Вопрос:

Я использую readTextFile(/path/to /dir) для чтения пакетов файлов, выполнения некоторых манипуляций со строками и сохранения их в cassandra.

Казалось, что все работает просто отлично, пока я не достиг более 170 файлов в каталоге (файлы удаляются после успешного запуска). Теперь я получаю «IOException: слишком много открытых файлов», и, быстро взглянув на lsof, я вижу, что тысячи файловых дескрипторов открываются, как только я запускаю свой код. Почти все файловые дескрипторы являются «сокетами».

Тестирование в меньшем масштабе всего с 10 файлами привело к открытию более 4000 файловых дескрипторов, после завершения скрипта все файловые дескрипторы закрываются и возвращаются к нормальному состоянию.

Это нормальное поведение flink? должен ли я увеличить ограничение?

Некоторые примечания: Среда — Tomcat 7 с Java 8, flink 1.1.2 с использованием DataSet API. Задание Flink запланировано с помощью quartz.

Все эти 170 файлов составляют около ~ 5 МБ.

Комментарии:

1. Можете ли вы добавить информацию о том, какую версию Flink вы используете? Кроме того, используете ли вы DataSet или DataStream API? Спасибо

2. Flink 1.1.2 использование DataSet API

Ответ №1:

Проблема решена.

После сужения кода я обнаружил, что использование «Unirest.setTimeouts» внутри высокопараллельного шага «map ()» вызвало выделение слишком большого количества потоков, что, в свою очередь, потребляло все мои файловые дескрипторы.