Почему сбой "Искры" с "слишком большим количеством открытых файлов"?
Я получаю "слишком много открытых файлов" во время фазы тасования моей работы Spark. Почему моя работа открывает так много файлов? Какие шаги я могу предпринять, чтобы попытаться сделать мою работу успешной.
Ответы
Ответ 1
Это ответили на список пользователей искры:
Лучшим способом, безусловно, является просто увеличение ulimit, если это возможно, это своего рода предположение, которое мы делаем в Spark, что кластеры будут способный переместить его.
Возможно, вы сможете взломать это, уменьшив количество редукторы [или сердечники, используемые каждым node], но это может иметь некоторые последствия для вашей работа.
В общем случае, если node в вашем кластере имеет C назначенные ядра, и вы запускаете работа с X-редукторами, затем Spark откроет файлы C * X параллельно и начало записи. Консолидация в случайном порядке поможет уменьшить общее количество созданных файлов, но количество дескрипторов файлов, открытых на любом время не меняется, поэтому это не поможет проблему ulimit.
-Патрик Венделл
Ответ 2
по умолчанию ulimit - 1024, что является смехотворно низким для крупномасштабных приложений. HBase рекомендует до 64K; современные Linux-системы, похоже, не имеют проблем с этим большим количеством открытых файлов.
использовать
ulimit -a
чтобы увидеть текущее максимальное количество открытых файлов
ulimit -n
может временно изменить количество открытых файлов; вам необходимо обновить файлы конфигурации системы и ограничения для каждого пользователя, чтобы сделать это постоянным. В системах RedHat, которые можно найти в
/etc/sysctl.conf
/etc/security/limits.conf