Запуск заданий MapReduce в среде Apache Hadoop, размещенной в HDInsight, с помощью REST
Статья
Узнайте, как с помощью REST API WebHCat для Apache Hive запускать задания MapReduce в среде Apache Hadoop, размещенной в кластере HDInsight. Curl используется для демонстрации возможностей взаимодействия с HDInsight с помощью необработанных HTTP-запросов для выполнения заданий MapReduce, их мониторинга и получения их результатов.
При использовании Curl или любых других средств связи REST с WebHCat нужно проводить аутентификацию запросов с помощью пароля и имени пользователя администратора кластера HDInsight. Имя кластера необходимо использовать в составе универсального кода ресурса (URI), используемого для отправки запросов на сервер.
API-интерфейс REST защищается с помощью обычной проверки подлинности доступа. Чтобы обеспечить безопасную отправку учетных данных на сервер, все запросы следует отправлять с помощью протокола HTTPS.
Curl
Для удобства работы задайте указанные ниже переменные. Этот пример предназначен для среды Windows. Измените его в соответствии с требованиями используемой среды.
Командная строка Windows
set CLUSTERNAME=
set PASSWORD=
Используйте следующую команду в командной строке, чтобы проверить возможность подключения к кластеру HDInsight:
Конец универсального кода ресурса (/mapreduce/jar) сообщает WebHCat, что этот запрос запускает задание MapReduce из класса в JAR-файле. Ниже приведены параметры, используемые в этой команде:
-d: -G не используется, поэтому в запросе по умолчанию используется метод POST.
-d задает значения данных, отправляемые в запросе.
user.name— пользователь, выполняющий команду.
jar: расположение JAR-файла, содержащего класс для запуска.
class: класс, содержащий логику MapReduce.
arg: аргументы, передаваемые в задание MapReduce. В данном случае это входной текстовый файл и каталог, который используется для вывода.
Эта команда должна вернуть идентификатор задания, который можно использовать для проверки состояния задания: job_1415651640909_0026.
Чтобы проверить состояние задания, используйте следующую команду. Замените значение JOBIDреальным значением, полученным на предыдущем шаге. При необходимости измените расположение jq.
Для удобства работы задайте указанные ниже переменные. Вместо CLUSTERNAME укажите реальное имя кластера. Выполните команду и введите пароль для входа в кластер, когда появится соответствующий запрос.
PowerShell
$clusterName="CLUSTERNAME"$creds = Get-Credential -UserName admin -Message"Enter the cluster login password"
Используйте следующую команду, чтобы проверить возможность подключения к кластеру HDInsight:
Конец универсального кода ресурса (/mapreduce/jar) сообщает WebHCat, что этот запрос запускает задание MapReduce из класса в JAR-файле. Ниже приведены параметры, используемые в этой команде:
user.name— пользователь, выполняющий команду.
jar: расположение JAR-файла, содержащего класс для запуска.
class: класс, содержащий логику MapReduce.
arg: аргументы, передаваемые в задание MapReduce. В данном случае это входной текстовый файл и каталог, который используется для вывода.
Эта команда должна вернуть идентификатор задания, который можно использовать для проверки состояния задания: job_1415651640909_0026.
Чтобы проверить состояние задания, используйте следующую команду.
PowerShell
$reqParams=@{"user.name"="admin"}
$resp = Invoke-WebRequest -Uri"https://$clusterName.azurehdinsight.net/templeton/v1/jobs/$jobID" `
-Credential$creds `
-Body$reqParams `
-UseBasicParsing# ConvertFrom-JSON can't handle duplicate names with different case# So change one to prevent the error$fixDup=$resp.Content.Replace("jobID","job_ID")
(ConvertFrom-Json$fixDup).status.state
Оба метода
Если задание завершено, то возвращается состояние SUCCEEDED.
После изменения состояния задания на SUCCEEDED результаты задания можно получить из хранилища BLOB-объектов Azure. Параметр statusdir, передаваемый в запросе, содержит расположение выходного файла. В данном случае это /example/curl. Этот адрес задает каталог /example/curl для сохранения выходных данных задания, который размещен в хранилище по умолчанию для кластера.
Azure HPC — это специально разработанная облачная возможность для рабочей нагрузки HPC и ИИ, использующая современные отраслевые процессоры и обмен данными по сети InfiniBand для обеспечения максимальной производительности, масштабируемости и ценности приложений. Azure HPC позволяет реализовывать инновации, повышать продуктивность и развивать гибкость бизнеса за счет высокодоступного набора технологий HPC и ИИ с возможностью их динамического распределения в соответствии с изменением коммерческих и техническ