2016-04-10 2 views
5

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

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

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

enter image description here

(Спарк 1.6.1 с Hadoop 2)

Обновлено:

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

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

  1. уменьшить количество файлов
  2. набор parquet.enable.summary-metadata ложных
+0

это может быть просто ошибка искры UI? Неужели так долго заканчивается? – marios

+0

Это не похоже. Когда я поймаю кластер в таком состоянии неопределенности, буквально ничего не происходит. – codingtwinky

+0

Были ли у вас какие-то ошибки исполнителя/работника в течение 15 минут работы? Если «да» и система перегружены, может случиться так, что ОС потребовалось много времени, чтобы привести следующего исполнителя/работника вверх (из-за ограниченных системных ресурсов). – marios

ответ

8

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

  • Спарк запишет временных s3 каталогов, а затем переместить файлы с помощью главного узла
  • Чтение текстовых файлов часто происходят на главном узле
  • При написании паркетных файлов, главный узел будет сканировать все файлы пост-запись для проверки в схеме

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

Discussion of writing I/O Overhead

Discussion of reading I/O Overhead

+0

Ты мой любимый! Мне еще нужно подтвердить, но на основании того, что я читаю, и поведения, которое, по-видимому, происходит. Спасибо друг! – codingtwinky

Смежные вопросы