Tutorial: Criar clusters do Apache Hadoop a pedido no HDInsight com Azure Data Factory
Neste tutorial, vai aprender a criar um cluster do Apache Hadoop, a pedido, no Azure HDInsight com Azure Data Factory. Em seguida, utilize pipelines de dados no Azure Data Factory para executar tarefas do Hive e eliminar o cluster. No final deste tutorial, irá aprender a executar uma tarefa de macrodados em que a operationalize
criação de clusters, a execução de tarefas e a eliminação de clusters são efetuadas com base numa agenda.
Este tutorial abrange as seguintes tarefas:
- Criar uma conta de armazenamento do Azure
- Compreender a atividade Azure Data Factory
- Criar uma fábrica de dados com portal do Azure
- Criar serviços ligados
- Criar um pipeline
- Acionar um pipeline
- Monitorizar um pipeline
- Verificar a saída
Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.
Pré-requisitos
O Módulo do Az do PowerShell instalado.
Um principal de serviço do Azure Active Directory. Depois de criar o principal de serviço, certifique-se de que obtém o ID da aplicação e a chave de autenticação com as instruções no artigo ligado. Precisa destes valores mais adiante neste tutorial. Além disso, certifique-se de que o principal de serviço é membro da função Contribuidor da subscrição ou do grupo de recursos no qual o cluster é criado. Para obter instruções para obter os valores necessários e atribuir as funções certas, veja Criar um principal de serviço do Azure Active Directory.
Criar objetos preliminares do Azure
Nesta secção, vai criar vários objetos que serão utilizados para o cluster do HDInsight que criar a pedido. A conta de armazenamento criada irá conter o script hiveQL de exemplo, partitionweblogs.hql
, que utiliza para simular uma tarefa do Apache Hive de exemplo que é executada no cluster.
Esta secção utiliza um script Azure PowerShell para criar a conta de armazenamento e copiar os ficheiros necessários na conta de armazenamento. O Azure PowerShell script de exemplo nesta secção faz as seguintes tarefas:
- Inicia sessão no Azure.
- Cria um grupo de recursos do Azure.
- Cria uma Conta de armazenamento do Azure.
- Cria um contentor de Blobs na conta de armazenamento
- Copia o script hiveQL de exemplo (partitionweblogs.hql) do contentor de Blobs. O script de exemplo já está disponível noutro contentor de Blobs público. O script do PowerShell abaixo faz uma cópia destes ficheiros para a conta de Armazenamento do Azure que cria.
Criar conta de armazenamento e copiar ficheiros
Importante
Especifique nomes para o grupo de recursos do Azure e a conta de armazenamento do Azure que será criada pelo script. Anote o nome do grupo de recursos, o nome da conta de armazenamento e a chave da conta de armazenamento saída pelo script. Vai precisar deles na próxima secção.
$resourceGroupName = "<Azure Resource Group Name>"
$storageAccountName = "<Azure Storage Account Name>"
$location = "East US"
$sourceStorageAccountName = "hditutorialdata"
$sourceContainerName = "adfv2hiveactivity"
$destStorageAccountName = $storageAccountName
$destContainerName = "adfgetstarted" # don't change this value.
####################################
# Connect to Azure
####################################
#region - Connect to Azure subscription
Write-Host "`nConnecting to your Azure subscription ..." -ForegroundColor Green
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
Connect-AzAccount
}
# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
#endregion
####################################
# Create a resource group, storage, and container
####################################
#region - create Azure resources
Write-Host "`nCreating resource group, storage account and blob container ..." -ForegroundColor Green
New-AzResourceGroup `
-Name $resourceGroupName `
-Location $location
New-AzStorageAccount `
-ResourceGroupName $resourceGroupName `
-Name $destStorageAccountName `
-Kind StorageV2 `
-Location $location `
-SkuName Standard_LRS `
-EnableHttpsTrafficOnly 1
$destStorageAccountKey = (Get-AzStorageAccountKey `
-ResourceGroupName $resourceGroupName `
-Name $destStorageAccountName)[0].Value
$sourceContext = New-AzStorageContext `
-StorageAccountName $sourceStorageAccountName `
-Anonymous
$destContext = New-AzStorageContext `
-StorageAccountName $destStorageAccountName `
-StorageAccountKey $destStorageAccountKey
New-AzStorageContainer `
-Name $destContainerName `
-Context $destContext
#endregion
####################################
# Copy files
####################################
#region - copy files
Write-Host "`nCopying files ..." -ForegroundColor Green
$blobs = Get-AzStorageBlob `
-Context $sourceContext `
-Container $sourceContainerName `
-Blob "hivescripts\hivescript.hql"
$blobs|Start-AzStorageBlobCopy `
-DestContext $destContext `
-DestContainer $destContainerName `
-DestBlob "hivescripts\partitionweblogs.hql"
Write-Host "`nCopied files ..." -ForegroundColor Green
Get-AzStorageBlob `
-Context $destContext `
-Container $destContainerName
#endregion
Write-host "`nYou will use the following values:" -ForegroundColor Green
write-host "`nResource group name: $resourceGroupName"
Write-host "Storage Account Name: $destStorageAccountName"
write-host "Storage Account Key: $destStorageAccountKey"
Write-host "`nScript completed" -ForegroundColor Green
Verificar a conta de armazenamento
- Inicie sessão no portal do Azure.
- À esquerda, navegue para Todos os serviços>Grupos de RecursosGerais>.
- Selecione o nome do grupo de recursos que criou no script do PowerShell. Utilize o filtro se tiver demasiados grupos de recursos listados.
- Na vista Descrição geral , verá um recurso listado, a menos que partilhe o grupo de recursos com outros projetos. Esse recurso é a conta de armazenamento com o nome que especificou anteriormente. Selecione o nome da conta de armazenamento.
- Selecione o mosaico Contentores .
- Selecione o contentor adfgetstarted . Verá uma pasta chamada
hivescripts
. - Abra a pasta e certifique-se de que contém o ficheiro de script de exemplo, partitionweblogs.hql.
Compreender a atividade de Azure Data Factory
Azure Data Factory orquestra e automatiza o movimento e a transformação dos dados. Azure Data Factory pode criar um cluster do Hadoop do HDInsight just-in-time para processar um setor de dados de entrada e eliminar o cluster quando o processamento estiver concluído.
No Azure Data Factory, uma fábrica de dados pode ter um ou mais pipelines de dados. Um pipeline de dados tem uma ou mais atividades. Existem dois tipos de atividades:
- Atividades de Movimento de Dados. Utiliza atividades de movimento de dados para mover dados de um arquivo de dados de origem para um arquivo de dados de destino.
- Atividades de Transformação de Dados. Utiliza atividades de transformação de dados para transformar/processar dados. A Atividade do Hive do HDInsight é uma das atividades de transformação suportadas pelo Data Factory. Neste tutorial, vai utilizar a atividade de transformação do Hive.
Neste artigo, vai configurar a atividade do Hive para criar um cluster do HDInsight Hadoop a pedido. Quando a atividade é executada para processar dados, eis o que acontece:
Um cluster do Hadoop do HDInsight é criado automaticamente para o utilizador just-in-time para processar o setor.
Os dados de entrada são processados ao executar um script hiveQL no cluster. Neste tutorial, o script hiveQL associado à atividade do hive faz as seguintes ações:
- Utiliza a tabela existente (hivesampletable) para criar outra tabela HiveSampleOut.
- Preenche a tabela HiveSampleOut com apenas colunas específicas da hivesampletable original.
O cluster do Hadoop do HDInsight é eliminado após a conclusão do processamento e o cluster fica inativo durante o período de tempo configurado (definição timeToLive). Se o próximo setor de dados estiver disponível para processamento com neste tempo de inatividade timeToLive, o mesmo cluster é utilizado para processar o setor.
Criar uma fábrica de dados
Inicie sessão no portal do Azure.
No menu esquerdo, navegue para
+ Create a resource
>Analytics>Data Factory.Introduza ou selecione os seguintes valores para o mosaico Nova fábrica de dados :
Propriedade Valor Nome Introduza um nome para a fábrica de dados. Este nome tem de ser globalmente exclusivo. Versão Deixe na V2. Subscrição Selecione a sua subscrição do Azure. O grupo de recursos Selecione o grupo de recursos que criou com o script do PowerShell. Localização A localização é definida automaticamente para a localização que especificou ao criar o grupo de recursos anteriormente. Para este tutorial, a localização está definida como E.U.A. Leste. Ativar o GIT Desmarque esta caixa. Selecione Criar. A criação de uma fábrica de dados pode demorar entre 2 a 4 minutos.
Assim que a fábrica de dados for criada, receberá uma notificação Implementação com êxito com um botão Ir para recurso . Selecione Ir para recurso para abrir a vista predefinida do Data Factory.
Selecione Monitor de Autor & para iniciar o portal de criação e monitorização do Azure Data Factory.
Criar serviços ligados
Nesta secção, vai criar dois serviços ligados na sua fábrica de dados.
- Um serviço ligado do Armazenamento do Azure que liga uma conta de armazenamento do Azure à fábrica de dados. Este armazenamento é utilizado pelo cluster do HDInsight a pedido. Também contém o script do Hive que é executado no cluster.
- Um serviço ligado do HDInsight a pedido. Azure Data Factory cria automaticamente um cluster do HDInsight e executa o script do Hive. Em seguida, elimina o cluster do HDInsight depois de o cluster estar inativo durante um período de tempo pré-configurado.
Criar um serviço ligado do Armazenamento do Azure
No painel esquerdo da página Vamos começar , selecione o ícone Autor .
Selecione Ligações no canto inferior esquerdo da janela e, em seguida, selecione +Novo.
Na caixa de diálogo Novo Serviço Ligado, selecione Armazenamento de Blobs do Azure e, em seguida, selecione Continuar.
Forneça os seguintes valores para o serviço ligado de armazenamento:
Propriedade Valor Name Introduza HDIStorageLinkedService
.Subscrição do Azure Selecione a sua subscrição na lista pendente. Nome da conta de armazenamento Selecione a conta de Armazenamento do Azure que criou como parte do script do PowerShell. Selecione Testar ligação e, se tiver êxito, selecione Criar.
Crie um serviço ligado do HDInsight a pedido
Selecione o botão + Novo novamente para criar outro serviço ligado.
Na janela Novo Serviço Ligado , selecione o separador Computação .
Selecione Azure HDInsight e, em seguida, selecione Continuar.
Na janela Novo Serviço Ligado , introduza os seguintes valores e deixe os restantes como predefinição:
Propriedade Valor Name Introduza HDInsightLinkedService
.Tipo Selecione HDInsight a pedido. Serviço Ligado do Storage do Azure Selecione HDIStorageLinkedService
.Tipo de cluster Selecionar hadoop Time to live Indique a duração para a qual pretende que o cluster do HDInsight esteja disponível antes de ser eliminado automaticamente. ID do principal de serviço Forneça o ID da aplicação do principal de serviço do Azure Active Directory que criou como parte dos pré-requisitos. Chave principal de serviço Forneça a chave de autenticação para o principal de serviço do Azure Active Directory. Prefixo de nome do cluster Indique um valor que será prefixado para todos os tipos de cluster criados pela fábrica de dados. Subscrição Selecione a sua subscrição na lista pendente. Selecionar o grupo de recursos Selecione o grupo de recursos que criou como parte do script do PowerShell que utilizou anteriormente. Tipo de SO/Nome de utilizador SSH do Cluster Introduza um nome de utilizador SSH, normalmente sshuser
.Tipo de SO/Palavra-passe SSH do Cluster Fornecer uma palavra-passe para o utilizador SSH Tipo de SO/Nome de utilizador do cluster Introduza um nome de utilizador de cluster, normalmente admin
.Tipo de SO/Palavra-passe do cluster Forneça uma palavra-passe para o utilizador do cluster. Em seguida, selecione Criar.
Criar um pipeline
Selecione o botão + (mais) e, em seguida, selecione Pipeline.
Na caixa de ferramentas Atividades , expanda HDInsight e arraste a atividade do Hive para a superfície do estruturador de pipelines. No separador Geral , forneça um nome para a atividade.
Certifique-se de que tem a atividade do Hive selecionada e selecione o separador Cluster HDI . Na lista pendente Serviço Ligado do HDInsight , selecione o serviço ligado que criou anteriormente, HDInsightLinkedService, para o HDInsight.
Selecione o separador Script e conclua os seguintes passos:
Para Serviço Ligado de Script, selecione HDIStorageLinkedService na lista pendente. Este valor é o serviço ligado de armazenamento que criou anteriormente.
Para Caminho do Ficheiro, selecione Procurar Armazenamento e navegue para a localização onde o script do Hive de exemplo está disponível. Se tiver executado o script do PowerShell anteriormente, esta localização deverá ser
adfgetstarted/hivescripts/partitionweblogs.hql
.EmParâmetrosAvançados>, selecione
Auto-fill from script
. Esta opção procura quaisquer parâmetros no script do Hive que exijam valores no runtime.Na caixa de texto de valor , adicione a pasta existente no formato
wasbs://adfgetstarted@<StorageAccount>.blob.core.windows.net/outputfolder/
. O caminho é sensível a maiúsculas e minúsculas. Este caminho é onde a saída do script será armazenada. Owasbs
esquema é necessário porque as contas de armazenamento têm agora a transferência segura necessária ativada por predefinição.
Selecione Validar para validar o pipeline. Selecione o botão >> (seta para a direita) para fechar a janela de validação.
Por fim, selecione Publicar Tudo para publicar os artefactos no Azure Data Factory.
Acionar um pipeline
Na barra de ferramentas na superfície do estruturador, selecione Adicionar acionador Acionador>Agora.
Selecione OK na barra lateral de pop-up.
Monitorizar um pipeline
Mude para o separador Monitorizar, no lado esquerdo. Verá uma execução de pipeline na lista Execuções de Pipeline. Repare no estado da execução na coluna Estado .
Selecione Atualizar para atualizar o estado.
Também pode selecionar o ícone Ver Execuções de Atividades para ver a execução de atividade associada ao pipeline. Na captura de ecrã abaixo, verá apenas uma execução de atividade, uma vez que existe apenas uma atividade no pipeline que criou. Para voltar à vista anterior, selecione Pipelines na parte superior da página.
Verificar a saída
Para verificar o resultado, no portal do Azure navegue para a conta de armazenamento que utilizou para este tutorial. Deverá ver as seguintes pastas ou contentores:
Verá uma pasta adfgerstarted/outputfolder que contém a saída do script do Hive que foi executado como parte do pipeline.
Verá um contentor adfhdidatafactory-linked-service-name-timestamp<><>. Este contentor é a localização de armazenamento predefinida do cluster do HDInsight que foi criado como parte da execução do pipeline.
Verá um contentor adfjobs que tem os registos de tarefas Azure Data Factory.
Limpar os recursos
Com a criação do cluster do HDInsight a pedido, não precisa de eliminar explicitamente o cluster do HDInsight. O cluster é eliminado com base na configuração que forneceu ao criar o pipeline. Mesmo depois de o cluster ser eliminado, as contas de armazenamento associadas ao cluster continuam a existir. Este comportamento é por predefinição para que possa manter os seus dados intactos. No entanto, se não quiser manter os dados, poderá eliminar a conta de armazenamento que criou.
Em alternativa, pode eliminar todo o grupo de recursos que criou para este tutorial. Este processo elimina a conta de armazenamento e o Azure Data Factory que criou.
Eliminar o grupo de recursos
Inicie sessão no portal do Azure.
Selecione Grupos de recursos no painel esquerdo.
Selecione o nome do grupo de recursos que criou no script do PowerShell. Utilize o filtro se tiver demasiados grupos de recursos listados. Abre o grupo de recursos.
No mosaico Recursos , terá a conta de armazenamento predefinida e a fábrica de dados listadas, a menos que partilhe o grupo de recursos com outros projetos.
Selecione Eliminar grupo de recursos. Ao fazê-lo, elimina a conta de armazenamento e os dados armazenados na conta de armazenamento.
Introduza o nome do grupo de recursos para confirmar a eliminação e, em seguida, selecione Eliminar.
Passos seguintes
Neste artigo, aprendeu a utilizar Azure Data Factory para criar um cluster do HDInsight a pedido e executar tarefas do Apache Hive. Avance para o artigo seguinte para saber como criar clusters do HDInsight com configuração personalizada.