Использование расширенного сервера журнала Apache Spark для отладки и диагностики приложений Apache Spark

В этой статье содержатся рекомендации по использованию расширенного сервера журнала Apache Spark для отладки и диагностики завершенных и запуска приложений Apache Spark.

Доступ к серверу журнала Apache Spark

Сервер истории Apache Spark — это веб-интерфейс для выполненных и выполняющихся приложений Spark. Вы можете открыть веб-интерфейс Apache Spark из блокнота индикатора выполнения или страницы сведений о приложении Apache Spark.

Откройте веб-интерфейс Spark из записной книжки индикатора прогресса

При активации задания Apache Spark кнопка открытия веб-интерфейса Spark находится внутри параметра "Дополнительно" в индикаторе хода выполнения. Выберите веб-интерфейс Spark и подождите несколько секунд, а затем появится страница пользовательского интерфейса Spark.

Снимок экрана, показывающий открытие веб-интерфейса Spark из журналов работы индикатора прогресса.

Открытие веб-интерфейса Spark на странице сведений о приложении Apache Spark

Веб-интерфейс Spark также можно открыть на странице сведений о приложении Apache Spark. Выберите "Монитор" в левой части страницы и выберите приложение Apache Spark. Откроется страница сведений приложения.

Снимок экрана: открытие веб-интерфейса Spark на странице сведений о приложении Apache Spark.

Для приложения Apache Spark, состояние которого выполняется, кнопка отображает пользовательский интерфейс Spark. Выберите Spark UI, и появится страница Spark UI.

Снимок экрана: кнопка отображает пользовательский интерфейс Spark в запущенном состоянии.

Для приложения Apache Spark, статус которого завершен, состояние может быть Остановлено, Ошибка, Отменено или Завершено. На кнопке показан сервер истории Spark. Выберите сервер журнала Spark и откроется страница пользовательского интерфейса Spark.

Снимок экрана показывает, что кнопка отображает интерфейс Spark в завершённом состоянии.

Загрузка на основе снимков для больших журналов событий

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

Благодаря этому улучшению пользовательский интерфейс Spark постепенно показывает доступные данные, а не ожидает завершения полного воспроизведения. Если размер журнала событий составляет 6 ГБ или больше, отображается сообщение о загрузке, указывающее, что требуется дополнительное время загрузки (обычно несколько минут).

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

С помощью этого интерфейса вы можете:

  • См. четкое сообщение о загрузке журналов больших событий (≥ 6 ГБ), поэтому вы знаете, что система активно обрабатывается, а не не отвечает.
  • Просматривайте частичный снимок заранее с помощью четко обозначенного баннера предварительного просмотра, чтобы изучать задания и этапы, не дожидаясь полного воспроизведения
  • Обновите страницу позже, чтобы загрузить полный набор данных после завершения обработки

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

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

Изучите сервер истории Apache Spark

Сервер журнала Apache Spark предоставляет веб-интерфейс пользовательского интерфейса, который восстанавливает сведения о выполнении приложения Spark из журналов событий. Это позволяет пользователям анализировать завершенные или запущенные приложения за пределами жизненного цикла среды выполнения.

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

Вкладка "Задания"

На вкладке "Задания" представлен общий обзор всех заданий в приложении Spark.

Это представление можно использовать для:

  • Мониторинг состояния задания (выполнение, успешное выполнение или сбой)
  • Сравнение длительности задания
  • Быстрое определение неудачных или медленных заданий

Вкладка "Этапы"

На вкладке "Этапы " отображаются подробные сведения о выполнении для каждого этапа.

Это представление можно использовать для:

  • Анализ производительности на уровне этапов
  • Проверка распределения задач и перемешивание метрик
  • Определите узкие места, такие как смещённые данные или ресурсоёмкие операции

Снимок экрана с вкладкой Stage.

Ограничение на количество стадий

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

The number of stages in this application exceeds limit (500), graph page is disabled in this case.

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

spark.ui.enhancement.maxGraphStages 1000

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

Вкладка хранилища

На вкладке "Хранилище" отображаются сведения о кэшированных данных.

Это представление можно использовать для:

  • Общие сведения об использовании памяти и дисков для кэшированных наборов данных
  • Проверка эффективности кэширования

Вкладка "Среда"

На вкладке "Среда" перечислены сведения о конфигурации среды выполнения и среде.

Это представление можно использовать для:

  • Проверка параметров конфигурации Spark
  • Проверка переменных среды и зависимостей
  • Устранение неполадок, связанных с конфигурацией

Вкладка "Исполнители"

Вкладка "Исполнители" отображает использование ресурсов между исполнителями.

Это представление можно использовать для:

  • Мониторинг использования ЦП и памяти
  • Анализ распределения задач между исполнителями
  • Выявление сбоев исполнителя или дисбалансов

Вкладка Graph

Вкладка Graph визуализирует выполнение задания Spark в виде ациклического графа (DAG), представляющего связи между этапами.

Это представление можно использовать для:

  • Узнайте, как задание разбито на этапы и их зависимости
  • Определение критических путей, определяющих общую продолжительность задания
  • Обнаружьте сбойные или повторно выполненные этапы
  • Воспроизведите выполнение задания, чтобы наблюдать за ходом выполнения задач с течением времени

Эта вкладка особенно полезна для понимания потока выполнения и определения узких мест производительности высокого уровня.

Снимок экрана: граф.

Вкладка "Диагностика"

Вкладка "Диагностика" предоставляет расширенные возможности анализа, в том числе:

  • Обнаружение отклонений данных
  • Анализ отклонений времени
  • Анализ использования исполнителя

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

Снимок экрана, показывающий вкладку анализа дисбаланса данных в SparkUI снова.

Эта вкладка помогает определить узкие места производительности и неэффективность в выполнении задания.

Отклонение данных

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

  • Укажите параметры . В первом разделе отображаются параметры, которые используются для обнаружения отклонений данных. Правило по умолчанию: чтение данных задачи в три раза превышает среднее чтение данных задачи и больше 10 МБ. Если вы хотите определить собственное правило для задач с отклонением, можно выбрать параметры. Разделы Смещённый этап и Смещённый символ обновляются соответствующим образом.

  • Этап с искажением - Второй раздел отображает этапы, в которых задачи с искажением соответствуют ранее заданным критериям. Если на этапе существует несколько перекошенных задач, то в таблице перекошенных этапов отображается только самая перекошенная задача (например, наибольшее количество данных для дисбаланса данных).

    Снимок экрана: вкладка

  • Диаграмма перекосов - При выборе строки в таблице этапов перекоса диаграмма отображает дополнительные сведения о распределении задач на основе времени чтения данных и выполнения. Смещённые задачи отмечены красным цветом, а обычные задачи отмечены синим цветом. На диаграмме отображается до 100 примеров задач, а сведения о задаче отображаются на правой нижней панели.

    Снимок экрана с диаграммой перекоса в пользовательском интерфейсе Spark для этапа 10.

Отклонение времени

На вкладке "Отклонение времени" отображаются смещенные задачи, основанные на времени выполнения задач.

  • Укажите параметры . В первом разделе отображаются параметры, которые используются для обнаружения отклонений времени. Критерии по умолчанию для обнаружения отклонений времени: время выполнения задачи превышает три раза среднего времени выполнения, а время выполнения задачи превышает 30 секунд. Параметры можно изменить в зависимости от ваших потребностей. На диаграмме смещённого этапа и диаграмме смещения отображается информация о соответствующих этапах и задачах, как описано ранее на вкладке Смещение данных.

  • Выберите Временное отклонение и затем отфильтрованный результат будет отображен в разделе Этап со сдвигом в соответствии с параметрами, указанными в разделе Указание параметров. Выберите один элемент в разделе Смещённый этап, затем соответствующая диаграмма строится в разделе 3, а детали задачи отображаются на правой нижней панели.

    Снимок экрана: раздел

Анализ использования исполнителя

Эта функция устарела в Fabric. Если вы по-прежнему хотите использовать это в качестве обходного решения, обратитесь к странице, добавив "/executorusage" после пути "/diagnostic" в URL, как показано ниже:

Снимок экрана: изменение URL-адреса.

Вкладка SQL/DataFrame

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

Это представление можно использовать для:

  • Анализ планов выполнения запросов
  • Просмотрите время выполнения запросов и производительность

Примечание

Доступность определенных вкладок зависит от типа рабочей нагрузки и включенных функций Spark.

Журналы исполнителя Spark в режиме свертывания: облегчение доступа для больших и длинных заданий

Поскольку приложения Spark продолжают увеличивать масштаб и длительность, эффективное управление журналами и анализ становятся все более критически важными. Для решения этих растущих потребностей мы представили усовершенствования сервера истории Spark (для завершенных приложений) и пользовательского интерфейса Spark (для запущенных приложений), что позволяет использовать скользящие журналы исполнителя для Spark 3.4 и более поздних версий.

Благодаря этому улучшению, если журнал исполнителя превышает 16 МБ или задание Spark выполняется более одного часа, система автоматически разбивает журналы на почасовые сегменты. Это упрощает навигацию, просмотр и скачивание журналов без работы с чрезвычайно большими файлами.

Теперь вы можете:

  • Просмотр журналов по часам, чтобы быстро определить определенные окна выполнения
  • Доступ к последним активным журналам во время выполнения задания.
  • Загрузите отдельные почасовые записи или все записи вместе, по мере необходимости.

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

Ниже приведен пример интерфейса "Журналы исполнителя Rolling Logs":

Снимок экрана, показывающий логи выполнения Spark.