Поделиться через


Отладка с помощью пользовательского интерфейса Spark

В этой статье описаны несколько вариантов отладки, доступных для приложения Apache Spark:

  • Пользовательский интерфейс Spark
  • Журналы драйверов
  • Журналы исполнителя

См. раздел Диагностика проблем с затратами и производительностью с помощью интерфейса Spark для ознакомления с процессом решения этих проблем.

Пользовательский интерфейс Spark

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

Пользовательский интерфейс Spark

Вкладка потоковой передачи

В пользовательском интерфейсе Spark вы увидите вкладку "Потоковая передача", если задание потоковой передачи выполняется на вычислительных ресурсах. Если в этом вычислении нет задания потоковой передачи, эта вкладка не отображается. Можно перейти к журналам драйверов , чтобы узнать, как проверить наличие исключений, которые могли возникнуть при запуске задания потоковой передачи.

Эта страница позволяет проверить, получает ли приложение потоковой передачи любые входные события из источника. Например, можно увидеть, что задание получает 1000 событий в секунду.

Заметка

Для TextFileStream, так как файлы являются входными, число событий на входе всегда равно нулю. В таких случаях вы можете ознакомиться с разделом "Завершенные пакеты" в записной книжке, чтобы узнать, как найти дополнительные сведения.

Если у вас есть приложение, которое получает несколько входных потоков, щелкните ссылку " Частота ввода ", которая будет отображать число событий, полученных для каждого получателя.

Время обработки

По мере прокрутки вниз найдите граф для времени обработки. Это один из ключевых графиков для понимания производительности задания потоковой передачи. В целом, хорошо, если вы сможете обрабатывать каждую партию в течение 80% от времени вашей пакетной обработки.

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

Завершенные партии

В конце страницы появится список всех завершенных пакетов. На странице отображаются сведения о последних 1000 пакетах, завершенных. Из таблицы можно получить количество событий, обработанных для каждого пакета и времени их обработки. Если вы хотите узнать больше о том, что произошло в одном из пакетов, щелкните ссылку пакетной службы, чтобы перейти на страницу сведений о пакете .

Страница сведений о пакетах

Страница сведений о пакетной службе содержит все сведения о пакете. Ниже приведены два основных способа:

  • Входные данные: содержит сведения о входных данных в пакете. В этом случае он содержит сведения о разделе Apache Kafka, секции и смещениях, считываемых структурированной потоковой передачей Spark для этого пакета. В случае TextFileStream отображается список имен файлов, которые были прочитаны для этого пакета. Это лучший способ начать отладку потокового приложения, читающего из текстовых файлов.
  • Обработка. Вы можете щелкнуть ссылку на идентификатор задания, который содержит все сведения об обработке, выполняемой во время этого пакета.

Страница сведений о задании

На странице сведений о задании показана визуализация DAG. Это полезно для понимания порядка операций и зависимостей для каждого пакета. Например, это может показать, что пакетное чтение входных данных из прямого потока Kafka, за которым следует операция плоской карты, а затем операция карты, а затем результирующий поток использовался для обновления глобального состояния с помощью updateStateByKey.

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

В нижней части страницы вы также найдете список заданий, которые были выполнены для этого пакета. Чтобы детализировать выполнение уровня задач, щелкните ссылки в описании.

Страница сведений о задаче

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

Совет

Убедитесь, что задачи выполняются на нескольких исполнителях (узлах) в вычислении, чтобы иметь достаточно параллелизма во время обработки. Если у вас есть один получатель, иногда только один исполнитель может выполнять всю необходимую работу, хотя у вас есть несколько исполнителей в вашей вычислительной системе.

Дамп потока

Дамп потоков показывает моментальный снимок состояния потоков JVM.

Дампы потоков полезны при отладке определенной задачи, зависающей или с медленным выполнением. Чтобы просмотреть дамп потока конкретной задачи в пользовательском интерфейсе Spark:

  1. Перейдите на вкладку "Задания ".
  2. В таблице заданий найдите целевое задание, соответствующее дампу потока, который вы хотите просмотреть, и щелкните ссылку в столбце "Описание ".
  3. В таблице этапов задания найдите этап, соответствующий дампу потока, который вы хотите просмотреть, и щелкните ссылку в столбце Описание.
  4. В списке задач этапа найдите целевую задачу, соответствующую дампу потока, которую вы хотите просмотреть, и запишите ее ID задачи и ID исполнителя.
  5. Перейдите на вкладку "Исполнители ".
  6. В таблице исполнителей найдите строку, содержащую значение идентификатора исполнителя , соответствующее значению идентификатора исполнителя , которое было отмечено ранее. В этой строке щёлкните ссылку в столбце дампа потока .
  7. В таблице дампов потока для исполнителя щелкните по строке, в которой столбец «Имя потока» содержит TID, за которым следует значение Идентификатор задачи, которое вы отметили ранее. (Если задача завершилась выполнением, вы не найдете соответствующий поток). Дамп потока задачи отображается.

Дампы потоков также полезны для отладки проблем, когда драйвер, как представляется, зависает (например, индикаторы выполнения Spark не отображаются) или выполнение запросов не продвигается (например, индикаторы выполнения Spark застряли на 100%). Чтобы просмотреть дамп потока драйвера в пользовательском интерфейсе Spark, выполните следующие действия.

  1. Перейдите на вкладку "Исполнители ".
  2. В таблице исполнителей в строке драйвера щелкните ссылку в столбце "Дамп потока ". Отображается дамп потока драйвера.

Журналы драйверов

Журналы драйверов полезны в следующих случаях:

  • Исключения. Иногда вкладка "Потоковая передача" в пользовательском интерфейсе Spark не отображается. Это связано с тем, что задание потоковой передачи не было запущено из-за какой-то ошибки. Вы можете углубиться в журналы драйверов, чтобы просмотреть трассировку стека исключения. В некоторых случаях задание потоковой передачи может корректно запуститься. Но все пакеты никогда не будут отображаться в разделе завершенных пакетов. Все они могут находиться в состоянии обработки или сбоя. В этих случаях журналы драйверов также полезны для понимания характера базовых проблем.
  • Печать: все инструкции печати в рамках DAG отображаются в журналах.

Заметка

Доступ к журналам драйверов зависит от режима доступа вычислительного ресурса. Для вычислений с помощью стандартного режима доступа только администраторы рабочих областей могут получить доступ к журналам драйверов. Для вычислений с выделенным режимом доступа выделенный пользователь или администраторы рабочей области могут получить доступ к журналам драйверов.

Журналы исполнителя

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

Заметка

Журналы исполнителя недоступны для вычислений в стандартном режиме доступа. Для вычислений с выделенным режимом доступа выделенный пользователь или администраторы рабочей области могут получить доступ к журналам исполнителя.