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:

  1. Inicia sessão no Azure.
  2. Cria um grupo de recursos do Azure.
  3. Cria uma Conta de armazenamento do Azure.
  4. Cria um contentor de Blobs na conta de armazenamento
  5. 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

  1. Inicie sessão no portal do Azure.
  2. À esquerda, navegue para Todos os serviços>Grupos de RecursosGerais>.
  3. Selecione o nome do grupo de recursos que criou no script do PowerShell. Utilize o filtro se tiver demasiados grupos de recursos listados.
  4. 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.
  5. Selecione o mosaico Contentores .
  6. Selecione o contentor adfgetstarted . Verá uma pasta chamada hivescripts.
  7. 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:

  1. Um cluster do Hadoop do HDInsight é criado automaticamente para o utilizador just-in-time para processar o setor.

  2. 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.
  3. 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

  1. Inicie sessão no portal do Azure.

  2. No menu esquerdo, navegue para + Create a resource>Analytics>Data Factory.

    Azure Data Factory no portal

  3. 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.

    Criar Azure Data Factory com portal do Azure

  4. Selecione Criar. A criação de uma fábrica de dados pode demorar entre 2 a 4 minutos.

  5. 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.

  6. Selecione Monitor de Autor & para iniciar o portal de criação e monitorização do Azure Data Factory.

    Descrição geral do portal 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

  1. No painel esquerdo da página Vamos começar , selecione o ícone Autor .

    Criar um serviço ligado Azure Data Factory

  2. Selecione Ligações no canto inferior esquerdo da janela e, em seguida, selecione +Novo.

    Criar ligações no Azure Data Factory

  3. Na caixa de diálogo Novo Serviço Ligado, selecione Armazenamento de Blobs do Azure e, em seguida, selecione Continuar.

    Criar o serviço ligado do Armazenamento do Azure para o Data Factory

  4. 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.

    Indique o nome do serviço ligado do Armazenamento do Azure

Crie um serviço ligado do HDInsight a pedido

  1. Selecione o botão + Novo novamente para criar outro serviço ligado.

  2. Na janela Novo Serviço Ligado , selecione o separador Computação .

  3. Selecione Azure HDInsight e, em seguida, selecione Continuar.

    Criar um serviço ligado do HDInsight para Azure Data Factory

  4. 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.

    Fornecer valores para o serviço ligado do HDInsight

Criar um pipeline

  1. Selecione o botão + (mais) e, em seguida, selecione Pipeline.

    Criar um pipeline no Azure Data Factory

  2. 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.

    Adicionar atividades ao pipeline do Data Factory

  3. 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.

    Indique os detalhes do cluster do HDInsight para o pipeline

  4. Selecione o separador Script e conclua os seguintes passos:

    1. Para Serviço Ligado de Script, selecione HDIStorageLinkedService na lista pendente. Este valor é o serviço ligado de armazenamento que criou anteriormente.

    2. 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.

      Indique os detalhes do script do Hive para o pipeline

    3. EmParâmetrosAvançados>, selecione Auto-fill from script. Esta opção procura quaisquer parâmetros no script do Hive que exijam valores no runtime.

    4. 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. O wasbs esquema é necessário porque as contas de armazenamento têm agora a transferência segura necessária ativada por predefinição.

      Fornecer parâmetros para o script do Hive

  5. Selecione Validar para validar o pipeline. Selecione o botão >> (seta para a direita) para fechar a janela de validação.

    Validar o pipeline de Azure Data Factory

  6. Por fim, selecione Publicar Tudo para publicar os artefactos no Azure Data Factory.

    Publicar o pipeline de Azure Data Factory

Acionar um pipeline

  1. Na barra de ferramentas na superfície do estruturador, selecione Adicionar acionador Acionador>Agora.

    Acionar o pipeline de Azure Data Factory

  2. Selecione OK na barra lateral de pop-up.

Monitorizar um pipeline

  1. 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 .

    Monitorizar o pipeline de Azure Data Factory

  2. Selecione Atualizar para atualizar o estado.

  3. 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.

    Monitorizar a atividade do pipeline de Azure Data Factory

Verificar a saída

  1. 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.

      Verificar a saída do pipeline de 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

  1. Inicie sessão no portal do Azure.

  2. Selecione Grupos de recursos no painel esquerdo.

  3. 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.

  4. 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.

  5. Selecione Eliminar grupo de recursos. Ao fazê-lo, elimina a conta de armazenamento e os dados armazenados na conta de armazenamento.

    portal do Azure eliminar grupo de recursos

  6. 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.