Spark: длительная задержка между заданиями

Итак, мы запускаем задание spark, которое извлекает данные и выполняет расширенное преобразование данных и записывает в несколько разных файлов. Все работает нормально, но я получаю случайные экспансивные задержки между ресурсоемким завершением работы и следующим началом работы.

на рисунке ниже мы видим, что работа, которая была запланирована в 17: 22:02, заняла 15 минут, чтобы закончить, что означает, что я ожидаю, что следующая работа будет запланирована около 17:37: 02. Однако, следующая работа была запланирована на 22:05:59, что +4 часов после успешной работы.

когда я копаюсь в Spark UI следующего задания, он показывает задержку планировщика

enter image description here

(Искра 1.6.1 с Hadoop 2)

обновление:

Я могу подтвердить, что ответ Дэвида ниже-это место о том, как IO ops обрабатываются в Spark, немного неожиданно. (Имеет смысл, что файл write по существу делает "соберите" за занавеской, прежде чем писать, рассматривая заказ и/или другие операции.) Но меня немного смущает тот факт, что время ввода-вывода не включено в время выполнения работы. Я думаю, вы можете увидеть его на вкладке "SQL" Spark UI, поскольку запросы все еще выполняются даже при успешном выполнении всех заданий, но вы не можете погрузиться в него вообще.

Я уверен, что есть больше способов улучшить, но ниже двух методов было достаточно для меня:

  1. уменьшить файл граф!--24-->
  2. set parquet.enable.summary-metadata в false

1 ответов


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

  • Spark будет записывать во временные каталоги s3, а затем перемещать файлы с помощью главного узла
  • чтение текстовых файлов часто происходит на master узел
  • при записи паркетных файлов главный узел будет сканировать все файлы после записи, чтобы проверить схему

эти проблемы могут быть решены путем настройки настроек пряжи или перепроектирования кода. Если вы предоставите исходный код, я смогу определить вашу проблему.

Обсуждение написания ввода-вывода накладных

Обсуждение чтения ввода-вывода накладных