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


Отладка приложений Apache Spark в кластере HDInsight с помощью Azure Toolkit for IntelliJ через SSH

В этой статье описано, как использовать инструменты HDInsight из Azure Toolkit for IntelliJ для удаленной отладки приложений в кластере HDInsight.

Предварительные условия

Создание приложения Spark Scala

  1. Запустите IntelliJ IDEA и выберите Create New Project (Создать проект), чтобы открыть окно New Project (Новый проект).

  2. На панели слева выберите Azure Spark/HDInsight.

  3. В главном окне выберите Spark Project with Samples (Scala) (Проект Spark с примерами (Scala)).

  4. Из раскрывающегося списка Build tool (Инструмент сборки) выберите один из следующих вариантов:

    • Maven для поддержки мастера создания проекта Scala.
    • SBT для управления зависимостями и создания проекта Scala.

    IntelliJ Создать новый проект - Spark.

  5. Выберите Далее.

  6. В окне New Project (Новый проект) укажите следующую информацию:

    Свойство Описание
    Имя проекта Введите имя. В этом пошаговом руководстве используется myApp.
    Расположение проекта Введите необходимое расположение для сохранения проекта.
    Project SDK (Пакет SDK проекта) Если поле является пустым, выберите New... (Создать...) и перейдите к JDK.
    Версия Spark Мастер создания интегрирует правильную версию пакетов SDK для Spark и Scala. Если используется версия кластера Spark более ранняя, чем 2.0, выберите Spark 1.x. В противном случае выберите Spark 2.x. В этом примере используется Spark 2.3.0 (Scala 2.11.8).

    В IntelliJ New Project выберите версию Spark.

  7. Выберите Готово. Может пройти несколько минут, прежде чем проект станет доступным. Ход выполнения отображается в нижнем правом углу.

  8. Разверните проект и перейдите в раздел src >main >scala >sample. Дважды щелкните SparkCore_WasbIOTest.

Выполнение локального запуска

  1. В скрипте SparkCore_WasbIOTest щелкните правой кнопкой мыши редактор скриптов и выберите параметр Run 'SparkCore_WasbIOTest', чтобы выполнить локальный запуск.

  2. После завершения локальной работы вы увидите сохранённый файл в текущем проводнике проектов: данные>по умолчанию.

    Результат локального выполнения Проекта IntelliJ.

  3. Наши инструменты автоматически устанавливают конфигурацию локального запуска по умолчанию при выполнении локального запуска и локальной отладки. Откройте конфигурацию [Spark в HDInsight] XXX в верхнем правом углу: вы увидите, что конфигурация [Spark в HDInsight] XXX уже создана в разделе Apache Spark в HDInsight. Откройте вкладку Locally Run (Локальный запуск).

    Запуск локальных конфигураций отладки в IntelliJ.

    • Переменные среды. Если вы уже задали переменную среды HADOOP_HOME для C:\WinUtils, она определяется автоматически и добавлять ее вручную не нужно.
    • Расположение WinUtils.exe. Если вы не задали переменную среды, найдите расположение, нажав соответствующую кнопку.
    • Просто выберите один из двух вариантов, и они не нужны в macOS и Linux.
  4. Кроме того, вы можете вручную задать конфигурацию перед локальным запуском и локальной отладкой. На предыдущем снимке экрана щелкните знак плюса (+). Затем выберите вариант Apache Spark on HDInsight (Apache Spark в HDInsight). Укажите имя и имя класса Main, чтобы сохранить их, а затем нажмите кнопку локального запуска.

Локальная отладка

  1. Откройте скрипт SparkCore_wasbloTest и задайте точки останова.

  2. Щелкните редактор скриптов правой кнопкой мыши. Выберите вариант Debug '[Spark on HDInsight]XXX', чтобы выполнить локальную отладку.

Выполнить удаленный запуск

  1. Перейдите в меню Запуск >Редактировать конфигурации. В этом меню можно создавать и редактировать конфигурации для удаленной отладки.

  2. В диалоговом окне Run/Debug Configurations (Конфигурации выполнения и отладки) щелкните знак "плюс" (+). Затем выберите вариант Apache Spark on HDInsight (Apache Spark в HDInsight).

    IntelliJ Добавить новую конфигурацию.

  3. Перейдите на вкладку Удаленный запуск в кластере. Введите следующие данные: Имя, Кластер Sparkи Имя класса Main. Затем щелкните Расширенная конфигурация (удаленная отладка). Наши средства поддерживают отладку с исполнителями. Значение numExecutors по умолчанию — 5. Лучше не указывать значение больше 3.

    Конфигурации запуска и отладки в IntelliJ.

  4. В части Расширенная конфигурация (удаленная отладка) выберите Включить удаленную отладку Spark. Введите имя пользователя SSH, затем введите пароль либо воспользуйтесь файлом закрытого ключа. Для выполнения удаленной отладки необходимо настроить ее. Не нужно ничего настраивать, если вы хотите просто использовать удаленный запуск.

    Расширенная конфигурация IntelliJ включает удаленную отладку Spark.

  5. Теперь конфигурация сохранена под именем, которое вы указали. Чтобы просмотреть сведения о конфигурации, выберите имя конфигурации. Чтобы внести изменения, выберите Edit Configurations (Изменить конфигурации).

  6. Завершив настройку конфигурации, можно запустить проект на удаленном кластере или выполнить удаленную отладку.

    Кнопка удаленной отладки задания Spark в IntelliJ.

  7. Нажмите кнопку Отключить, чтобы журналы отправки не отображались на левой панели. Тем не менее она все еще выполняется в серверной части.

    Результат удаленного запуска Spark-задания для отладки в IntelliJ.

Удаленная отладка

  1. Настройте точки останова, а затем щелкните значок Remote debug (Удаленная отладка). Отличие удаленной отправки заключается в том, что имя пользователя и пароль SSH должны быть настроены.

    Значок отладки Spark-работы при удаленном дебаге в IntelliJ.

  2. Когда выполнение программы достигнет точки останова, в области Debugger (Отладчик) вы увидите вкладку Driver (Драйвер) и две вкладки Executor (Исполнитель). Щелкните значок Resume Program (Возобновить выполнение программы), чтобы продолжить выполнение кода, который затем достигнет следующей точки останова. Откройте соответствующую вкладку Исполнитель, чтобы найти целевой исполнитель для отладки. Вы можете просмотреть журналы выполнения на соответствующей вкладке Консоль.

    Вкладка отладки IntelliJ для удалённого задания Spark.

Удаленная отладка и исправление ошибок

  1. Настройте две точки останова и щелкните значок Debug (Отладка), чтобы приступить к удаленной отладке.

  2. Выполнение кода будет приостановлено в первой точке останова, а в области Variables (Переменные) отобразятся сведения о параметре и переменной.

  3. Щелкните значок Resume Program (Возобновить выполнение программы), чтобы продолжить. Выполнение кода останавливается на второй точке. Как и ожидалось, возникнет исключение.

    Ошибка при отладке удаленного задания Spark в IntelliJ.

  4. Снова щелкните значок Resume Program (Возобновить выполнение программы). В окне HDInsight Spark Submission отображается ошибка "сбой выполнения задания".

    Ошибка отправки удаленной задачи Spark в IntelliJ для отладки.

  5. Чтобы динамически обновить значение переменной с помощью функции отладки IntelliJ, еще раз щелкните значок Debug (Отладка). Снова появится область Variables.

  6. Щелкните правой кнопкой мыши целевой объект на вкладке Debug (Отладка), а затем выберите Set Value (Задать значение). Затем введите новое значение переменной. Нажмите клавишу ВВОД, чтобы сохранить значение.

    Значение набора заданий Remote Spark для отладки IntelliJ.

  7. Щелкните значок Resume Program (Возобновить выполнение программы), чтобы продолжить выполнение программы. На этот раз исключение не возникает. Проект выполняется успешно без исключений.

    Отладка удаленного задания Spark в IntelliJ без исключений.

Следующие шаги

Сценарии

Создание и запуск приложений

Инструменты и расширения

Управление ресурсами