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


Создание приложений Apache Spark для кластера HDInsight с помощью набора средств Azure для Eclipse

Используйте средства HDInsight в Наборе средств Azure для Eclipse для разработки приложений Apache Spark , написанных в Scala , и их отправки в кластер Azure HDInsight Spark непосредственно из интегрированной среды разработки Eclipse. Подключаемый модуль инструментов HDInsight можно использовать несколькими разными способами:

  • Разработка и отправка приложения Scala Spark в кластере HDInsight Spark.
  • Чтобы получить доступ к ресурсам кластера Azure HDInsight Spark.
  • Для разработки и запуска приложения Scala Spark локально.

Предпосылки

Установите необходимые подключаемые модули

Установка Azure Toolkit for Eclipse

Инструкции по установке см. в разделе "Установка набора средств Azure для Eclipse".

Установка подключаемого модуля Scala

Когда вы открываете Eclipse, инструменты HDInsight автоматически определяют, установлен ли плагин Scala. Нажмите кнопку "ОК ", чтобы продолжить, а затем следуйте инструкциям по установке подключаемого модуля из Eclipse Marketplace. Перезапустите интегрированную среду разработки после завершения установки.

Автоматическая установка подключаемого модуля Scala.

Подтверждение подключаемых модулей

  1. Перейдите к справке>Eclipse Marketplace....

  2. Выберите вкладку "Установленная".

  3. Вы должны увидеть хотя бы следующее:

    • Набор средств Azure для Eclipse<версия>.
    • Версия IDE <>Scala.

Войдите в подписку Azure.

  1. Запустите интегрированную среду разработки Eclipse.

  2. Перейдите к Окно>Показать представление>Другое...>Войдите в систему....

  3. В диалоговом окне "Показать представление " перейдите в Azure>Explorer и нажмите кнопку "Открыть".

    Просмотр в Apache Spark Eclipse.

  4. В Azure Explorer щелкните правой кнопкой мыши узел Azure и выберите команду "Войти".

  5. В диалоговом окне входа Azure выберите метод проверки подлинности, нажмите кнопку "Войти" и завершите процесс входа.

    Apache Spark Eclipse Azure Sign.

  6. После входа в диалоговое окно "Подписки" выводится список всех подписок Azure, связанных с учетными данными. Нажмите клавишу SELECT , чтобы закрыть диалоговое окно.

    Диалоговое окно выбора подписок.

  7. В Azure Explorer перейдите в Azure> HDInsight, чтобы просмотреть кластерыHDInsight Spark в подписке.

    Кластеры HDInsight Spark в Azure Explorer3.

  8. Вы можете дополнительно развернуть узел имени кластера, чтобы просмотреть ресурсы (например, учетные записи хранения), связанные с кластером.

    Расширение имени кластера для просмотра ресурсов.

Вы можете связать обычный кластер с помощью управляемого имени пользователя Ambari. Аналогичным образом, для присоединенного к домену кластера HDInsight можно связаться с помощью домена и имени пользователя, например [email protected].

  1. В Azure Explorer щелкните правой кнопкой мыши HDInsight и выберите Связать кластер.

    Меню кластера связи Azure Explorer.

  2. Введите имя кластера, имя пользователя и пароль, а затем нажмите кнопку "ОК". При необходимости введите учетную запись хранения и ключ хранилища, а затем выберите контейнер хранилища, чтобы обозреватель хранилища работал в левой части древовидного представления.

    Диалог подключения нового кластера HDInsight.

    Примечание.

    Мы используем связанный ключ хранилища, имя пользователя и пароль, если кластер вошел в подписку Azure и связан кластер. Учетные записи хранения Azure Explorer.

    Для пользователя, работающего только с клавиатурой, когда текущий фокус находится на Storage Key, необходимо использовать Ctrl+TAB, чтобы переключиться на следующее поле в диалоговом окне.

  3. Связанный кластер можно просмотреть в HDInsight. Теперь вы можете отправить приложение в этот связанный кластер.

    Связанный кластер Azure Explorer hdi.

  4. Кроме того, вы можете отменить связь с кластером из Azure Explorer.

    Несоединяемый кластер Azure Explorer.

Настройка проекта Spark Scala для кластера HDInsight Spark

  1. В рабочей области IDE Eclipse выберите файл>нового>проекта....

  2. В мастере создания нового проекта выберите HDInsight Project>Spark на HDInsight (Scala). Затем выберите Далее.

    Выбор проекта Spark в HDInsight (Scala).

  3. В диалоговом окне "Новый проект HDInsight Scala" укажите следующие значения и нажмите кнопку "Далее".

    • Введите имя проекта.
    • В области JRE убедитесь, что для JRE среды выполнения задано значение JavaSE-1.7 или более поздней версии.
    • В области библиотеки Spark можно выбрать вариант "Использовать Maven", чтобы настроить параметр пакета SDK Spark . Наше средство интегрирует правильную версию пакета SDK Spark и пакета SDK Scala. Вы также можете вручную выбрать вариант добавления пакета SDK Spark , скачать и добавить пакет SDK Spark вручную.

    Диалоговое окно

  4. В следующем диалоговом окне просмотрите сведения и нажмите кнопку "Готово".

Создание приложения Scala для кластера HDInsight Spark

  1. В обозревателе пакетов разверните созданный ранее проект. Щелкните правой кнопкой мыши на src, выберите Новый>другое....

  2. В диалоговом окне "Выбор мастера" выберите Scala Wizards>Scala Object. Затем выберите Далее.

    Выберите мастер создания объекта Scala.

  3. В диалоговом окне "Создать файл" введите имя объекта и нажмите кнопку "Готово". Откроется текстовый редактор.

    Мастер создания нового файла.

  4. В текстовом редакторе замените текущее содержимое приведенным ниже кодом:

    import org.apache.spark.SparkConf
    import org.apache.spark.SparkContext
    
    object MyClusterApp{
        def main (arg: Array[String]): Unit = {
        val conf = new SparkConf().setAppName("MyClusterApp")
        val sc = new SparkContext(conf)
    
        val rdd = sc.textFile("wasbs:///HdiSamples/HdiSamples/SensorSampleData/hvac/HVAC.csv")
    
        //find the rows that have only one digit in the seventh column in the CSV
        val rdd1 =  rdd.filter(s => s.split(",")(6).length() == 1)
    
        rdd1.saveAsTextFile("wasbs:///HVACOut")
        }
    }
    
  5. Запустите приложение в кластере HDInsight Spark:

    a. В обозревателе пакетов щелкните правой кнопкой мыши имя проекта и выберите "Отправить приложение Spark в HDInsight".

    б. В диалоговом окне отправки Spark укажите следующие значения и нажмите кнопку "Отправить".

    • Для имени кластера выберите кластер HDInsight Spark, на котором нужно запустить приложение.

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

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

    • Так как код приложения в этом примере не требует аргументов командной строки или ссылок на JAR или файлы, можно оставить оставшиеся текстовые поля пустыми.

      Диалоговое окно отправки Apache Spark.

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

    Окно отправки Apache Spark.

Доступ к кластерам HDInsight Spark и управление ими с помощью средств HDInsight в Наборе средств Azure для Eclipse

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

Просмотреть задание

  1. В Azure Explorer разверните HDInsight, а затем имя кластера Spark и выберите "Задания".

    Узел представления заданий Eclipse в Azure Explorer.

  2. Выберите узел Jobs. Если версия Java ниже 1.8, средства HDInsight автоматически предлагают установить подключаемый модуль E(fx)clipse. Нажмите кнопку "ОК ", чтобы продолжить, а затем следуйте мастеру, чтобы установить его из Eclipse Marketplace и перезапустить Eclipse.

    Установите отсутствующий подключаемый модуль E(fx)clipse.

  3. Откройте представление задания из узла заданий . На правой панели вкладка "Представление задания Spark " отображает все приложения, которые были запущены в кластере. Выберите имя приложения, для которого вы хотите просмотреть дополнительные сведения.

    Просмотр сведений о журналах заданий в Apache Eclipse.

    Затем можно выполнить любое из следующих действий:

    • Наведите указатель мыши на граф задания. В нем отображаются основные сведения о выполняемом задании. Выберите граф заданий, и вы увидите этапы и сведения, создаваемые каждым заданием.

      Сведения о стадии графа заданий Apache Spark.

    • Выберите вкладку "Журнал" , чтобы просмотреть часто используемые журналы, включая Driver Stderr, Driver Stdout и сведения о каталоге.

      Сведения о журнале заданий Apache Spark Eclipse.

    • Откройте пользовательский интерфейс журнала Spark и пользовательский интерфейс Apache Hadoop YARN (на уровне приложения), выбрав гиперссылки в верхней части окна.

Доступ к контейнеру хранилища для кластера

  1. В Azure Explorer разверните корневой узел HDInsight , чтобы просмотреть список доступных кластеров HDInsight Spark.

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

    Учетная запись хранения и контейнер хранилища по умолчанию.

  3. Выберите имя контейнера хранилища, связанное с кластером. В правой области дважды щелкните папку HVACOut . Откройте один из файлов part-, чтобы просмотреть результат работы приложения.

Получите доступ к серверу истории Spark

  1. В Azure Explorer щелкните правой кнопкой мыши имя кластера Spark и выберите команду Открыть пользовательский интерфейс журнала Spark. При появлении запроса введите учетные данные администратора для кластера. Вы указали их при создании кластера.

  2. На панели мониторинга сервера истории Spark используйте имя приложения для поиска приложения, которое вы только что закончили запускать. В приведенном выше коде вы задали имя приложения с помощью val conf = new SparkConf().setAppName("MyClusterApp"). Таким образом, имя приложения Spark было MyClusterApp.

Запустите портал Apache Ambari

  1. В Azure Explorer щелкните правой кнопкой мыши имя кластера Spark, а затем откройте портал управления кластерами (Ambari).

  2. При появлении запроса введите учетные данные администратора для кластера. Вы указали их при создании кластера.

Управление подписками Azure

По умолчанию средство HDInsight в Наборе средств Azure для Eclipse перечисляет кластеры Spark из всех подписок Azure. При необходимости можно указать подписки, для которых требуется получить доступ к кластеру.

  1. В Azure Explorer щелкните правой кнопкой мыши корневой узел Azure и выберите пункт "Управление подписками".

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

Локальное выполнение приложения Spark Scala

Средства HDInsight в Наборе средств Azure для Eclipse можно использовать для локального запуска приложений Spark Scala на рабочей станции. Как правило, эти приложения не нуждаются в доступе к ресурсам кластера, таким как контейнер хранилища, и их можно запускать и тестировать локально.

Предпосылка

При запуске локального приложения Spark Scala на компьютере с Windows вы можете получить исключение, как описано в SPARK-2356. Это исключение возникает из-за отсутствия WinUtils.exe в Windows.

Чтобы устранить эту ошибку, необходимо переместитьWinutils.exe в расположение, например, C:\WinUtils\bin, а затем добавить переменную среды HADOOP_HOME и задать для переменной значение C:\WinUtils.

Запуск локального приложения Spark Scala

  1. Запустите Eclipse и создайте проект. В диалоговом окне "Создать проект" введите следующие варианты и нажмите кнопку "Далее".

  2. В мастере New Project выберите HDInsight Project>Spark для HDInsight: локальный запуск примера (Scala). Затем выберите Далее.

    Новый проект выбирает диалоговое окно мастера.

  3. Чтобы предоставить сведения о проекте, выполните шаги 3–6 из предыдущего раздела " Настройка проекта Spark Scala для кластера HDInsight Spark".

  4. Шаблон добавляет пример кода (LogQuery) в папку src , которую можно запустить локально на компьютере.

    Расположение локального приложения Scala LogQuery.

  5. Щелкните правой кнопкой мыши LogQuery.scala и выберите команду Run As>1 Scala Application. Выходные данные, такие как это, отображаются на вкладке консоли :

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

Роль только для чтения

Когда пользователи отправляют задание в кластер с разрешением только на чтение, требуются учетные данные Ambari.

  1. Войдите с помощью учетной записи с ролью только для чтения.

  2. В Azure Explorer разверните HDInsight , чтобы просмотреть кластеры HDInsight, которые находятся в вашей подписке. Кластеры, помеченные как Role:Reader, имеют разрешение только для чтения.

    Кластеры HDInsight Spark в средстве чтения ролей Azure Explorer.

  3. Щелкните правой кнопкой мыши кластер с разрешением роли только для чтения. Выберите "Связать этот кластер" из контекстного меню, чтобы связать кластер. Введите имя пользователя и пароль Ambari.

    Кластеры HDInsight Spark в Azure Explorer.

  4. Если кластер связан успешно, HDInsight будет обновлен. Этап кластера будет связан.

    Кластеры HDInsight Spark, связанные в обозревателе Azure.

  1. Нажмите узел Задания, всплывет окно Отказано в доступе к заданию кластера.

  2. Щелкните Связать этот кластер, чтобы связать кластер.

    Кластеры HDInsight Spark в Azure Explorer9.

  1. Создайте проект HDInsight.

  2. Щелкните правой кнопкой мыши на пакете. Затем выберите "Отправить приложение Spark в HDInsight".

    Кластеры HDInsight Spark в Azure Explorer отправки.

  3. Выберите кластер, который имеет разрешение роли «только чтение» для Cluster Name. Отображается предупреждающее сообщение. Чтобы связать кластер, щелкните Связать этот кластер.

    Кластеры HDInsight Spark в Azure Explorer связываются с этим.

Просмотр учетных записей хранения

  • Для кластеров с разрешением только для чтения щелкните узел "Учетные записи хранения ", откроется окно "Доступ к хранилищу запрещен".

    Кластеры HDInsight Spark в хранилище Azure Explorer.

    Кластеры HDInsight Spark в Azure Explorer запрещены.

  • Для связанных кластеров щелкните узел "Учетные записи хранения" , откроется окно "Доступ к хранилищу запрещен".

    Кластеры HDInsight Spark в Azure Explorer запрещены2.

Известные проблемы

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

Связь кластера с учётными данными для хранения, связанными с Eclipse.

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

Eclipse выдает ошибку, когда кластер загружен.

Eclipse выдаёт ошибку, когда кластер загружен YARN.

См. также

Сценарии

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

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

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