Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Saiba como usar a API REST do Apache Hive WebHCat para executar trabalhos do MapReduce em um cluster Apache Hadoop no HDInsight. Curl é usado para demonstrar como você pode interagir com o HDInsight usando solicitações HTTP brutas para executar trabalhos do MapReduce.
Observação
Se você já está familiarizado com o uso de servidores Hadoop baseados em Linux, mas é novo no HDInsight, consulte o O que você precisa saber sobre o Apache Hadoop baseado em Linux no HDInsight documento.
Pré-requisitos
- Um cluster Apache Hadoop em HDInsight. Consulte Criar clusters Apache Hadoop usando o portal do Azure.
Ou então
Executar um trabalho MapReduce
Observação
Ao usar o Curl ou qualquer outra comunicação REST com o WebHCat, você deve autenticar as solicitações fornecendo o nome de usuário e a senha do administrador do cluster HDInsight. Você deve usar o nome do cluster como parte do URI usado para enviar as solicitações ao servidor.
A API REST é protegida usando autenticação de acesso básico. Você deve sempre fazer solicitações usando HTTPS para garantir que suas credenciais sejam enviadas com segurança para o servidor.
Enrolar
Para facilitar o uso, defina as variáveis abaixo. Este exemplo é baseado em um ambiente Windows, revise conforme necessário para seu ambiente.
set CLUSTERNAME= set PASSWORD=Em uma linha de comando, use o seguinte comando para verificar se você pode se conectar ao cluster HDInsight:
curl -u admin:%PASSWORD% -G https://%CLUSTERNAME%.azurehdinsight.net/templeton/v1/statusOs parâmetros utilizados neste comando são os seguintes:
- -u: Indica o nome de usuário e a senha usados para autenticar a solicitação
- -G: Indica que esta operação é uma solicitação GET
O início do URI,
https://CLUSTERNAME.azurehdinsight.net/templeton/v1, é o mesmo para todas as solicitações.Você recebe uma resposta semelhante ao seguinte JSON:
{"version":"v1","status":"ok"}Para enviar um trabalho do MapReduce, use o seguinte comando. Modifique o caminho para jq conforme necessário.
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 .idO final do URI (/mapreduce/jar) informa ao WebHCat que essa solicitação inicia um trabalho MapReduce a partir de uma classe em um arquivo jar. Os parâmetros utilizados neste comando são os seguintes:
-
-d:
-Gnão é usado, portanto, a solicitação assume como padrão o método POST.-despecifica os valores de dados que são enviados com a solicitação.- user.name: O usuário que está executando o comando
- jar: O local do arquivo jar que contém a classe a ser executada
- classe: A classe que contém a lógica MapReduce
- arg: Os argumentos a serem passados para a tarefa MapReduce. Nesse caso, o arquivo de texto de entrada e o diretório que são usados para a saída
Este comando deve retornar um ID de trabalho que pode ser usado para verificar o status do trabalho:
job_1415651640909_0026.-
-d:
Para verificar o status do trabalho, use o seguinte comando. Substitua o valor de
JOBIDpelo valor de real de retornado na etapa anterior. Revise a localização de jq conforme necessário.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
Para facilitar o uso, defina as variáveis abaixo. Substitua
CLUSTERNAMEpelo nome real do cluster. Execute o comando e digite a senha de login do cluster quando solicitado.$clusterName="CLUSTERNAME" $creds = Get-Credential -UserName admin -Message "Enter the cluster login password"Use o seguinte comando para verificar se você pode se conectar ao cluster HDInsight:
$resp = Invoke-WebRequest -Uri "https://$clustername.azurehdinsight.net/templeton/v1/status" ` -Credential $creds ` -UseBasicParsing $resp.ContentVocê recebe uma resposta semelhante ao seguinte JSON:
{"version":"v1","status":"ok"}Para enviar um trabalho MapReduce, use o seguinte comando:
$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 $jobIDO final do URI (/mapreduce/jar) informa ao WebHCat que essa solicitação inicia um trabalho MapReduce a partir de uma classe em um arquivo jar. Os parâmetros utilizados neste comando são os seguintes:
- user.name: O usuário que está executando o comando
- jar: O local do arquivo jar que contém a classe a ser executada
- classe: A classe que contém a lógica MapReduce
- arg: Os argumentos a serem passados para o trabalho MapReduce. Nesse caso, o arquivo de texto de entrada e o diretório que são usados para a saída
Este comando deve retornar um ID de trabalho que pode ser usado para verificar o status do trabalho:
job_1415651640909_0026.Para verificar o status do trabalho, use o seguinte comando:
$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
Ambos os métodos
Se o trabalho estiver concluído, o estado retornado será
SUCCEEDED.Quando o estado do trabalho for alterado para
SUCCEEDED, você poderá recuperar os resultados do trabalho do armazenamento de Blob do Azure. O parâmetrostatusdirque é passado com a consulta contém o local do arquivo de saída. Neste exemplo, o local é/example/curl. Esse endereço armazena a saída do trabalho no armazenamento padrão de clusters em/example/curl.
Você pode listar e baixar esses arquivos usando a CLI do Azure. Para obter mais informações sobre como usar a CLI do Azure para trabalhar com o armazenamento de Blob do Azure, consulte Guia de início rápido : criar, baixar e listar blobs com a CLI do Azure.
Próximos passos
Para obter informações sobre outras maneiras de trabalhar com o Hadoop no HDInsight:
- Usar o MapReduce com o Apache Hadoop no HDInsight
- Usar o Apache Hive com o Apache Hadoop no HDInsight
Para obter mais informações sobre a interface REST usada neste artigo, consulte o WebHCat Reference.