Отладка приложений Apache Spark в кластере HDInsight с помощью Azure Toolkit for IntelliJ через SSH
В этой статье описано, как использовать инструменты HDInsight из Azure Toolkit for IntelliJ для удаленной отладки приложений в кластере HDInsight.
Необходимые компоненты
Кластер Apache Spark в HDInsight. Ознакомьтесь со статьей Краткое руководство. Создание кластера Apache Spark в HDInsight с помощью шаблона.
Для пользователей Windows: при запуске локального приложения Spark Scala на компьютере с Windows может возникнуть исключение, описанное в статье о SPARK-2356. Это исключение возникает, так как в Windows отсутствует файл WinUtils.exe.
Чтобы устранить эту ошибку, скачайте файл Winutils.exe, например в папку C:\WinUtils\bin. После этого добавьте переменную среды HADOOP_HOME и присвойте ей значение C\WinUtils.
IntelliJ IDEA (Выпуск Community Edition предоставляется бесплатно.)
Клиент SSH. Дополнительные сведения см. в руководстве по подключению к HDInsight (Apache Hadoop) с помощью SSH.
Создание приложения Spark Scala
Запустите IntelliJ IDEA и выберите Create New Project (Создать проект), чтобы открыть окно New Project (Новый проект).
На панели слева выберите Azure Spark/HDInsight.
В главном окне выберите Spark Project with Samples (Scala) (Проект Spark с примерами (Scala)).
Из раскрывающегося списка Build tool (Инструмент сборки) выберите один из следующих вариантов:
- Maven для поддержки мастера создания проекта Scala.
- SBT для управления зависимостями и создания проекта Scala.
Выберите Далее.
В окне New Project (Новый проект) укажите следующую информацию:
Свойство Description Имя проекта Введите имя. В этом пошаговом руководстве используется 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). Выберите Готово. Может пройти несколько минут, прежде чем проект станет доступным. Ход выполнения отображается в нижнем правом углу.
Разверните проект и перейдите в раздел src > main > scala > sample. Дважды щелкните SparkCore_WasbIOTest.
Выполнение локального запуска
В скрипте SparkCore_WasbIOTest щелкните правой кнопкой мыши редактор скриптов и выберите параметр Run 'SparkCore_WasbIOTest', чтобы выполнить локальный запуск.
По завершении локального выполнения выходной файл сохраняется в текущий обозреватель проектов: данные>по умолчанию.
С помощью наших средств при локальном запуске и локальной отладке по умолчанию настраивается конфигурацию локального запуска. Откройте конфигурацию [Spark в HDInsight] XXX в верхнем правом углу: вы увидите, что конфигурация [Spark в HDInsight] XXX уже создана в разделе Apache Spark в HDInsight. Откройте вкладку Locally Run (Локальный запуск).
- Переменные среды. Если вы уже задали переменную среды HADOOP_HOME для C:\WinUtils, она определяется автоматически и добавлять ее вручную не нужно.
- Расположение WinUtils.exe. Если вы не задали переменную среды, найдите расположение, нажав соответствующую кнопку.
- Просто выберите один из вариантов (в MacOS и Linux в этом нет необходимости).
Кроме того, вы можете вручную задать конфигурацию перед локальным запуском и локальной отладкой. На предыдущем снимке экрана щелкните знак плюса (+). Затем выберите вариант Apache Spark on HDInsight (Apache Spark в HDInsight). Укажите имя и имя класса Main, чтобы сохранить их, а затем нажмите кнопку локального запуска.
Локальная отладка
Откройте скрипт SparkCore_wasbloTest и задайте точки останова.
Щелкните редактор скриптов правой кнопкой мыши. Выберите вариант Debug '[Spark on HDInsight]XXX', чтобы выполнить локальную отладку.
Удаленный запуск
Перейдите в меню Запуск > Редактировать конфигурации. В этом меню можно создавать и редактировать конфигурации для удаленной отладки.
В диалоговом окне Run/Debug Configurations (Конфигурации выполнения и отладки) щелкните знак "плюс" (+). Затем выберите вариант Apache Spark on HDInsight (Apache Spark в HDInsight).
Перейдите на вкладку Удаленный запуск в кластере. Введите следующие данные: Имя, Кластер Sparkи Имя класса Main. Затем щелкните Расширенная конфигурация (удаленная отладка). Наши средства поддерживают отладку с исполнителями. Для параметра numExectors по умолчанию устанавливается значение 5. Лучше не указывать значение больше 3.
В части Расширенная конфигурация (удаленная отладка) выберите Включить удаленную отладку Spark. Введите имя пользователя SSH, затем введите пароль либо воспользуйтесь файлом закрытого ключа. Для выполнения удаленной отладки необходимо настроить ее. Чтобы использовать удаленный запуск, не нужно настраивать отладку.
Теперь конфигурация сохранена под именем, которое вы указали. Чтобы просмотреть сведения о конфигурации, выберите имя конфигурации. Чтобы внести изменения, выберите Edit Configurations (Изменить конфигурации).
Завершив настройку конфигурации, можно запустить проект на удаленном кластере или выполнить удаленную отладку.
Нажмите кнопку Отключить, чтобы журналы отправки не отображались на левой панели. Тем не менее она все еще выполняется в серверной части.
Удаленная отладка
Настройте точки останова, а затем щелкните значок Remote debug (Удаленная отладка). Отличие удаленной отладки заключается в том, что требуется настроить имя пользователя и пароль SSH.
Когда выполнение программы достигнет точки останова, в области Debugger (Отладчик) вы увидите вкладку Driver (Драйвер) и две вкладки Executor (Исполнитель). Щелкните значок Resume Program (Возобновить выполнение программы), чтобы продолжить выполнение кода, который затем достигнет следующей точки останова. Откройте соответствующую вкладку Исполнитель, чтобы найти целевой исполнитель для отладки. Вы можете просмотреть журналы выполнения на соответствующей вкладке Консоль.
Удаленная отладка и исправление ошибок
Настройте две точки останова и щелкните значок Debug (Отладка), чтобы приступить к удаленной отладке.
Выполнение кода будет приостановлено в первой точке останова, а в области Variables (Переменные) отобразятся сведения о параметре и переменной.
Щелкните значок Resume Program (Возобновить выполнение программы), чтобы продолжить. Выполнение кода будет приостановлено во второй точке останова. Как и ожидалось, возникнет исключение.
Снова щелкните значок Resume Program (Возобновить выполнение программы). В окне HDInsight Spark Submission (Отправка HDInsight Spark) будет указано, что во время выполнения задания произошла ошибка.
Чтобы динамически обновить значение переменной с помощью функции отладки IntelliJ, еще раз щелкните значок Debug (Отладка). Снова появится область Variables (Переменные).
Щелкните правой кнопкой мыши целевой объект на вкладке Debug (Отладка), а затем выберите Set Value (Задать значение). Затем введите новое значение переменной. Нажмите клавишу ВВОД, чтобы сохранить значение.
Щелкните значок Resume Program (Возобновить выполнение программы), чтобы продолжить выполнение программы. На этот раз исключение не возникает. Проект выполняется успешно без исключений.
Следующие шаги
Сценарии
- Руководство. Анализ данных Apache Spark с использованием Power BI в HDInsight
- Apache Spark и Машинное обучение. Анализ температуры в здании на основе данных системы кондиционирования с помощью Spark в HDInsight
- Apache Spark и Машинное обучение. Прогнозирование результатов проверки пищевых продуктов с помощью Spark в HDInsight
- Анализ журналов веб-сайтов с помощью Apache Spark в HDInsight
Создание и запуск приложений
- Создание автономного приложения с использованием Scala
- Удаленный запуск заданий с помощью Apache Livy в кластере Apache Spark
Инструменты и расширения
- Создание приложений Apache Spark для кластера HDInsight с помощью Azure Toolkit for IntelliJ
- Удаленная отладка приложений Spark в HDInsight через VPN с помощью Azure Toolkit for IntelliJ
- Использование средств HDInsight в Azure Toolkit for Eclipse для создания приложений Apache Spark
- Использование записных книжек Zeppelin с кластером Apache Spark в Azure HDInsight
- Ядра, доступные для Jupyter Notebook в кластере Apache Spark в HDInsight
- Использование внешних пакетов с Jupyter Notebook
- Установка записной книжки Jupyter на компьютере и ее подключение к кластеру Apache Spark в Azure HDInsight (предварительная версия)