Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Узнайте, как использовать REST API Apache Hive WebHCat для выполнения заданий MapReduce в кластере Apache Hadoop в HDInsight. Curl используется для демонстрации возможности взаимодействия с HDInsight с помощью необработанных HTTP-запросов для выполнения заданий MapReduce.
Примечание.
Если вы уже знакомы с использованием серверов Hadoop под управлением Linux, но вы не знакомы с HDInsight, ознакомьтесь с разделом "Что нужно знать о Apache Hadoop на основе Linux в документе HDInsight ".
Предпосылки
- Кластер Apache Hadoop в HDInsight. См. Создание кластеров Apache Hadoop с использованием портала Azure.
Любое из следующих:
Выполнение задания MapReduce
Примечание.
При использовании Curl или любого другого взаимодействия REST с WebHCat необходимо пройти проверку подлинности запросов, указав имя пользователя и пароль администратора кластера HDInsight. Необходимо использовать имя кластера в составе универсального кода ресурса (URI), который используется для отправки запросов на сервер.
REST API защищен с помощью базовой проверки подлинности доступа. Всегда следует отправлять запросы с помощью HTTPS, чтобы обеспечить безопасное отправку учетных данных на сервер.
Curl
Чтобы упростить использование, задайте указанные ниже переменные. Этот пример основан на среде Windows, изменив ее в соответствии с потребностями в вашей среде.
set CLUSTERNAME= set PASSWORD=
В командной строке выполните следующую команду, чтобы убедиться, что вы можете подключиться к кластеру HDInsight:
curl -u admin:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/status
Ниже приведены параметры, используемые в этой команде:
- -u: указывает имя пользователя и пароль, используемые для проверки подлинности запроса.
- -G: указывает, что эта операция является запросом GET
Начало URI
https://CLUSTERNAME.azurehdinsight.net/templeton/v1
совпадает со всеми запросами.Вы получите ответ, аналогичный следующему JSON:
{"version":"v1","status":"ok"}
Чтобы отправить задание MapReduce, используйте следующую команду. При необходимости измените путь к jq .
curl -u admin:%PASSWORD% -d user.name=admin ^ -d jar=/example/jars/hadoop-mapreduce-examples.jar ^ -d class=wordcount -d arg=/example/data/gutenberg/davinci.txt -d arg=/example/data/output ^ https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/mapreduce/jar | ^ C:\HDI\jq-win64.exe .id
Конец URI (/mapreduce/jar) сообщает WebHCat, что этот запрос запускает задание MapReduce из класса в JAR-файле. Ниже приведены параметры, используемые в этой команде:
-
-d:
-G
не используется, поэтому по умолчанию используется метод POST для запроса.-d
указывает значения данных, отправляемые запросом.- user.name: пользователь, выполняющий команду
- jar: расположение JAR-файла, содержащего класс, который должен быть запущен
- класс: класс, содержащий логику MapReduce
- arg: аргументы, передаваемые в задание MapReduce. В этом случае входной текстовый файл и каталог, используемые для выходных данных
Эта команда должна возвращать идентификатор задания, который можно использовать для проверки состояния задания:
job_1415651640909_0026
-
-d:
Чтобы проверить состояние задания, используйте следующую команду. Замените значение фактическим значением
JOBID
, возвращаемым на предыдущем шаге. При необходимости изменяйте расположение jq .set JOBID=job_1415651640909_0026 curl -G -u admin:%PASSWORD% -d user.name=admin https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/jobs/%JOBID% | ^ C:\HDI\jq-win64.exe .status.state
PowerShell
Чтобы упростить использование, задайте указанные ниже переменные. Замените
CLUSTERNAME
фактическим именем кластера. Выполните команду и введите пароль для входа в кластер при появлении запроса.$clusterName="CLUSTERNAME" $creds = Get-Credential -UserName admin -Message "Enter the cluster login password"
Используйте следующую команду, чтобы убедиться, что вы можете подключиться к кластеру HDInsight:
$resp = Invoke-WebRequest -Uri "https://$clustername.azurehdinsight.net/templeton/v1/status" ` -Credential $creds ` -UseBasicParsing $resp.Content
Вы получите ответ, аналогичный следующему JSON:
{"version":"v1","status":"ok"}
Чтобы отправить задание MapReduce, используйте следующую команду:
$reqParams = @{} $reqParams."user.name" = "admin" $reqParams.jar = "/example/jars/hadoop-mapreduce-examples.jar" $reqParams.class = "wordcount" $reqParams.arg = @() $reqParams.arg += "/example/data/gutenberg/davinci.txt" $reqparams.arg += "/example/data/output" $resp = Invoke-WebRequest -Uri "https://$clusterName.azurehdinsight.net/templeton/v1/mapreduce/jar" ` -Credential $creds ` -Body $reqParams ` -Method POST ` -UseBasicParsing $jobID = (ConvertFrom-Json $resp.Content).id $jobID
Конец URI (/mapreduce/jar) сообщает WebHCat, что этот запрос запускает задание MapReduce из класса в JAR-файле. Ниже приведены параметры, используемые в этой команде:
- user.name: пользователь, выполняющий команду
- jar: расположение JAR-файла, содержащего класс, который должен быть запущен
- класс: класс, содержащий логику MapReduce
- arg: аргументы, передаваемые в задание MapReduce. В этом случае входной текстовый файл и каталог, используемые для выходных данных
Эта команда должна возвращать идентификатор задания, который можно использовать для проверки состояния задания:
job_1415651640909_0026
Чтобы проверить состояние задания, используйте следующую команду.
$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. Дополнительные сведения об использовании Azure CLI для работы с хранилищем Blob-объектов Azure см. в кратком руководстве: создание, скачивание и перечисление Blob-объектов с помощью Azure CLI.
Дальнейшие действия
Дополнительная информация о других способах работы с Hadoop в HDInsight:
- Использование MapReduce в Apache Hadoop в HDInsight
- Используйте Apache Hive с Apache Hadoop на HDInsight
Дополнительные сведения об интерфейсе REST, используемом в этой статье, см. в справочнике по WebHCat.