O Azure PowerShell fornece cmdlets que permitem executar remotamente trabalhos do MapReduce no HDInsight. Internamente, o PowerShell faz chamadas REST para WebHCat (anteriormente chamado de Templeton) em execução no cluster HDInsight.
Os cmdlets a seguir usados ao executar trabalhos do MapReduce em um cluster HDInsight remoto.
Cmdlet
Description
Connect-AzAccount
Autentica o Azure PowerShell na sua assinatura do Azure.
New-AzHDInsightMapReduceJobDefinition
Cria uma nova definição de trabalho usando as informações MapReduce especificadas.
Start-AzHDInsightJob
Envia a definição de trabalho para o HDInsight e inicia o trabalho. Um objeto de trabalho é retornado.
Wait-AzHDInsightJob
Usa o objeto de trabalho para verificar o status do trabalho. Ele aguarda até que o trabalho seja concluído ou o tempo de espera seja excedido.
Get-AzHDInsightJobOutput
Usado para recuperar a saída do trabalho.
As etapas a seguir demonstram como usar esses cmdlets para executar um trabalho em seu cluster HDInsight.
Usando um editor, salve o código a seguir como mapreducejob.ps1.
# Login to your Azure subscription
$context = Get-AzContext
if ($context -eq $null)
{
Connect-AzAccount
}
$context
# Get cluster info
$clusterName = Read-Host -Prompt "Enter the HDInsight cluster name"
$creds=Get-Credential -Message "Enter the login for the cluster"
#Get the cluster info so we can get the resource group, storage, etc.
$clusterInfo = Get-AzHDInsightCluster -ClusterName $clusterName
$resourceGroup = $clusterInfo.ResourceGroup
$storageAccountName=$clusterInfo.DefaultStorageAccount.split('.')[0]
$container=$clusterInfo.DefaultStorageContainer
#NOTE: This assumes that the storage account is in the same resource
# group as the cluster. If it is not, change the
# --ResourceGroupName parameter to the group that contains storage.
$storageAccountKey=(Get-AzStorageAccountKey `
-Name $storageAccountName `
-ResourceGroupName $resourceGroup)[0].Value
#Create a storage context
$context = New-AzStorageContext `
-StorageAccountName $storageAccountName `
-StorageAccountKey $storageAccountKey
#Define the MapReduce job
#NOTE: If using an HDInsight 2.0 cluster, use hadoop-examples.jar instead.
# -JarFile = the JAR containing the MapReduce application
# -ClassName = the class of the application
# -Arguments = The input file, and the output directory
$wordCountJobDefinition = New-AzHDInsightMapReduceJobDefinition `
-JarFile "/example/jars/hadoop-mapreduce-examples.jar" `
-ClassName "wordcount" `
-Arguments `
"/example/data/gutenberg/davinci.txt", `
"/example/data/WordCountOutput"
#Submit the job to the cluster
Write-Host "Start the MapReduce job..." -ForegroundColor Green
$wordCountJob = Start-AzHDInsightJob `
-ClusterName $clusterName `
-JobDefinition $wordCountJobDefinition `
-HttpCredential $creds
#Wait for the job to complete
Write-Host "Wait for the job to complete..." -ForegroundColor Green
Wait-AzHDInsightJob `
-ClusterName $clusterName `
-JobId $wordCountJob.JobId `
-HttpCredential $creds
# Download the output
Get-AzStorageBlobContent `
-Blob 'example/data/WordCountOutput/part-r-00000' `
-Container $container `
-Destination output.txt `
-Context $context
# Print the output of the job.
Get-AzHDInsightJobOutput `
-Clustername $clusterName `
-JobId $wordCountJob.JobId `
-HttpCredential $creds
Abra um novo prompt de comando do Azure PowerShell . Altere os diretórios para o local do arquivo mapreducejob.ps1 e use o seguinte comando para executar o script:
.\mapreducejob.ps1
Quando executa o script, é-lhe pedido o nome do cluster HDInsight e o início de sessão do cluster. Você também pode ser solicitado a autenticar sua assinatura do Azure.
Quando o trabalho é concluído, você recebe uma saída semelhante ao seguinte texto:
Essa saída indica que o trabalho foi concluído com êxito.
Nota
Se o ExitCode for um valor diferente de 0, consulte Solução de problemas.
Este exemplo também armazena os arquivos baixados em um arquivo output.txt no diretório a partir do qual você executa o script.
Ver saída
Para ver as palavras e contagens produzidas pelo trabalho, abra o arquivo output.txt em um editor de texto.
Nota
Os arquivos de saída de um trabalho MapReduce são imutáveis. Portanto, se você executar novamente este exemplo, precisará alterar o nome do arquivo de saída.
Resolução de Problemas
Se nenhuma informação for retornada quando o trabalho for concluído, exiba os erros do trabalho. Para exibir informações de erro para este trabalho, adicione o seguinte comando ao final do arquivo mapreducejob.ps1 . Em seguida, salve o arquivo e execute novamente o script.
# Print the output of the WordCount job.
Write-Host "Display the standard output ..." -ForegroundColor Green
Get-AzHDInsightJobOutput `
-Clustername $clusterName `
-JobId $wordCountJob.JobId `
-HttpCredential $creds `
-DisplayOutputType StandardError
Este cmdlet retorna as informações que foram gravadas no STDERR à medida que o trabalho é executado.
Próximos passos
Como você pode ver, o Azure PowerShell fornece uma maneira fácil de executar trabalhos do MapReduce em um cluster HDInsight, monitorar o status do trabalho e recuperar a saída. Para obter informações sobre outras maneiras de trabalhar com o Hadoop no HDInsight:
O Azure HPC é um recurso de nuvem criado especificamente para a carga de trabalho HPC & AI, usando processadores de ponta e interconexão InfiniBand de classe HPC, para oferecer o melhor desempenho, escalabilidade e valor de aplicativos. O Azure HPC permite que os utilizadores desbloqueiem a inovação, a produtividade e a agilidade empresarial, através de uma gama altamente disponível de tecnologias de HPC ou IA que podem ser alocadas dinamicamente à medida que as suas necessidades empresariais e técnicas mud