Tutorial: Criar clusters Apache Hadoop a pedido em HDInsight usando Azure Data Factory

Neste tutorial, aprende-se a criar um cluster Apache Hadoop , a pedido, em Azure HDInsight usando a Azure Data Factory. Em seguida, utilize os oleodutos de dados na Azure Data Factory para executar trabalhos de Colmeia e eliminar o cluster. No final deste tutorial, aprende-se a fazer um grande trabalho de dados onde a operationalize criação de clusters, a corrida ao emprego e a eliminação de agrupamentos são feitas em horário.

Este tutorial abrange as seguintes tarefas:

  • Criar uma conta de armazenamento do Azure
  • Compreender a atividade da Fábrica de Dados Azure
  • Criar uma fábrica de dados utilizando o portal 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 PowerShell Az instalado.

  • Um diretor de serviço do Azure Ative Directory. Uma vez criado o principal de serviço, certifique-se de recuperar o ID da aplicação e a chave de autenticação usando as instruções no artigo ligado. Precisa destes valores mais tarde neste tutorial. Além disso, certifique-se de que o diretor de serviço é membro do papel de Contribuinte da subscrição ou do grupo de recursos em que o cluster é criado. Para obter instruções para recuperar os valores necessários e atribuir as funções certas, consulte Criar um diretor de serviço do Azure Ative Directory.

Criar objetos Azure preliminares

Nesta secção, cria vários objetos que serão utilizados para o cluster HDInsight que cria a pedido. A conta de armazenamento criada conterá a amostra do script HiveQL, partitionweblogs.hqlque você usa para simular uma amostra de Apache Hive que funciona no cluster.

Esta secção utiliza um script Azure PowerShell para criar a conta de armazenamento e copiar sobre os ficheiros necessários dentro da conta de armazenamento. O script da amostra Azure PowerShell nesta secção faz as seguintes tarefas:

  1. Assina para Azure.
  2. Cria um grupo de recursos Azure.
  3. Cria uma Conta de armazenamento do Azure.
  4. Cria um recipiente Blob na conta de armazenamento
  5. Copia a amostra do script HiveQL (partitionweblogs.hql) o recipiente Blob. O guião da amostra já está disponível em outro recipiente público blob. O script PowerShell abaixo faz uma cópia destes ficheiros na conta de Armazenamento Azure que cria.

Criar conta de armazenamento e copiar ficheiros

Importante

Especifique os nomes para o grupo de recursos Azure e para a conta de armazenamento 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 outputd by the 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 conta de armazenamento

  1. Inicie sessão no portal do Azure.
  2. Da esquerda, navegue para todos os serviços>grupos de Recursos Gerais>.
  3. Selecione o nome de grupo de recursos que criou no seu script PowerShell. Utilize o filtro se tiver demasiados grupos de recursos listados.
  4. A partir da vista geral , você vê um recurso listado a menos que você partilhe o grupo de recursos com outros projetos. Esse recurso é a conta de armazenamento com o nome especificado anteriormente. Selecione o nome da conta de armazenamento.
  5. Selecione o azulejo dos recipientes .
  6. Selecione o recipiente adfgetstarted . Vê-se uma pasta chamada hivescripts.
  7. Abra a pasta e certifique-se de que contém o ficheiro de script de amostra, partitionweblogs.hql.

Compreender a atividade da Fábrica de Dados Azure

A Azure Data Factory orquestra e automatiza o movimento e transformação de dados. A Azure Data Factory pode criar um cluster HdInsight Hadoop just-in-time para processar uma fatia de dados de entrada e eliminar o cluster quando o processamento estiver concluído.

Na Azure Data Factory, uma fábrica de dados pode ter um ou mais oleodutos 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 uma loja de dados de origem para uma loja de dados de destino.
  • Atividades de Transformação de Dados. Utiliza atividades de transformação de dados para transformar/processar dados. A HDInsight Hive Activity é uma das atividades de transformação apoiadas pela Data Factory. Você usa a atividade de transformação da Colmeia neste tutorial.

Neste artigo, você configura a atividade da Colmeia para criar um cluster hdinsight hadoop a pedido. Quando a atividade corre para processar dados, eis o que acontece:

  1. Um cluster HDInsight Hadoop é criado automaticamente para você apenas no tempo para processar a fatia.

  2. Os dados de entrada são processados executando um script HiveQL no cluster. Neste tutorial, o script HiveQL associado à atividade da colmeia faz as seguintes ações:

    • Usa a mesa existente (hivesampletable) para criar outra mesa HiveSampleOut.
    • Povoa a tabela HiveSampleOut com apenas colunas específicas do hivesampletable original.
  3. O cluster HDInsight Hadoop é eliminado após o processamento estar completo e o cluster está inativo durante a quantidade de tempo configurada (definição timeToLive). Se a próxima fatia de dados estiver disponível para processamento com neste tempo ParaLive tempo de marcha lenta, o mesmo cluster é usado para processar a fatia.

Criar uma fábrica de dados

  1. Inicie sessão no portal do Azure.

  2. Do menu esquerdo, navegue até a + Create a resource>Analytics>Data Factory.

    Azure Data Factory on the portal

  3. Introduza ou selecione os seguintes valores para o novo azulejo da fábrica de dados :

    Propriedade Valor
    Nome Insira 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 criado utilizando o script PowerShell.
    Localização A localização é automaticamente definida para o local especificado enquanto cria o grupo de recursos mais cedo. Para este tutorial, a localização está definida para leste dos EUA.
    Ativar GIT Desmarque esta caixa.

    Create Azure Data Factory using Azure portal

  4. Selecione Criar. Criar 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 de implementação com um botão De recurso. Selecione Vá para o recurso para abrir a vista padrão da Data Factory.

  6. Selecione Author & Monitor para lançar o portal de autoria e monitorização da Azure Data Factory.

    Azure Data Factory portal overview

Criar serviços ligados

Nesta secção, é autor de dois serviços ligados dentro da 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 da Colmeia que é executado no cluster.
  • Um serviço on-demand HDInsight ligado. A Azure Data Factory cria automaticamente um cluster HDInsight e executa o script 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. A partir do painel esquerdo do Let's get start page, selecione o ícone Autor .

    Create an Azure Data Factory linked service

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

    Create connections in Azure Data Factory

  3. Na caixa de diálogo New Linked Service , selecione Azure Blob Storage e, em seguida, selecione Continue.

    Create Azure Storage linked service for Data Factory

  4. Fornecer os seguintes valores para o serviço ligado ao armazenamento:

    Propriedade Valor
    Name Introduza HDIStorageLinkedService.
    Subscrição do Azure Selecione a sua subscrição a partir da lista de drop-down.
    Nome da conta de armazenamento Selecione a conta de Armazenamento Azure que criou como parte do script PowerShell.

    Selecione a ligação de teste e, se for bem sucedido, selecione Criar.

    Provide name for Azure Storage linked service

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 New Linked Service , selecione o separador Computação .

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

    Create HDInsight linked service for Azure Data Factory

  4. Na janela Serviço Novo Ligado , introduza os seguintes valores e deixe os restantes como padrão:

    Propriedade Valor
    Name Introduza HDInsightLinkedService.
    Tipo Selecione HDInsight a pedido.
    Serviço Ligado do Storage do Azure Selecione HDIStorageLinkedService.
    Tipo de cluster Selecione hadoop
    Time to live Forneça a duração durante a qual deseja que o cluster HDInsight esteja disponível antes de ser eliminado automaticamente.
    ID principal de serviço Forneça o ID de aplicação do diretor de serviço azure ative que criou como parte dos pré-requisitos.
    Chave principal do serviço Forneça a chave de autenticação para o diretor de serviço do Azure Ative Directory.
    Prefixo do nome do cluster Fornecer um valor que será pré-fixado a todos os tipos de cluster criados pela fábrica de dados.
    Subscrição Selecione a sua subscrição a partir da lista de drop-down.
    Selecionar o grupo de recursos Selecione o grupo de recursos que criou como parte do script PowerShell que usou anteriormente.
    Nome de utilizador do tipo DE/Cluster SSH Introduza um nome de utilizador SSH, comumente sshuser.
    Palavra-passe tipo DE/Cluster SSH Fornecer uma senha para o utilizador SSH
    Nome de utilizador do tipo DE/Cluster Introduza um nome de utilizador do cluster, comumente admin.
    Palavra-passe tipo DE/Cluster Forneça uma palavra-passe para o utilizador do cluster.

    Em seguida, selecione Criar.

    Provide values for HDInsight linked service

Criar um pipeline

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

    Create a pipeline in Azure Data Factory

  2. Na caixa de ferramentas Atividades , expanda o HDInsight e arraste a atividade da Colmeia para a superfície do designer de gasodutos. No separador Geral , forneça um nome para a atividade.

    Add activities to Data Factory pipeline

  3. Certifique-se de que tem a atividade da Colmeia selecionada, selecione o separador Cluster HDI . E a partir da lista de drop-down do HDInsight Linked Service , selecione o serviço ligado que criou anteriormente, HDInsightLinkedService, para HDInsight.

    Provide HDInsight cluster details for the pipeline

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

    1. Para o Serviço ligado ao script, selecione HDIStorageLinkedService da lista de suspensos. Este valor é o serviço de armazenamento ligado que criou anteriormente.

    2. Para o Caminho do Ficheiro, selecione Browse Storage e navegue para o local onde está disponível o script hive da amostra. Se executou o script PowerShell mais cedo, esta localização deve ser adfgetstarted/hivescripts/partitionweblogs.hql.

      Provide Hive script details for the pipeline

    3. EmParâmetrosAvançados>, selecione Auto-fill from script. Esta opção procura quaisquer parâmetros no script da Colmeia que exijam valores em tempo de execução.

    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 uma transferência segura necessária ativada por padrão.

      Provide parameters for the Hive script

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

    Validate the Azure Data Factory pipeline

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

    Publish the Azure Data Factory pipeline

Acionar um pipeline

  1. A partir da barra de ferramentas na superfície do designer, selecione Adicione o gatilho>Agora.

    Trigger the Azure Data Factory pipeline

  2. Selecione OK na barra lateral 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. Note o estado da execução sob a coluna Status .

    Monitor the Azure Data Factory pipeline

  2. Selecione Atualizar para atualizar o estado.

  3. Também pode selecionar o ícone 'Ver Atividades' para ver a atividade executada associada ao pipeline. Na imagem abaixo, vê-se apenas uma atividade a decorrer, uma vez que há apenas uma atividade no oleoduto que criou. Para voltar à vista anterior, selecione Pipelines para o topo da página.

    Monitor the Azure Data Factory pipeline activity

Verificar a saída

  1. Para verificar a saída, no portal Azure navegue para a conta de armazenamento que utilizou para este tutorial. Deve ver as seguintes pastas ou recipientes:

    • Você vê um adfgerstared/outputfolder que contém a saída do script hive que foi executado como parte do pipeline.

    • Você vê um adfhdidatafactory-linked-service-name-time-timestamp<><>. Este recipiente é o local de armazenamento padrão do cluster HDInsight que foi criado como parte da execução do gasoduto.

    • Você vê um contentor adfjobs que tem os registos de trabalho da Azure Data Factory.

      Verify the Azure Data Factory pipeline output

Limpar os recursos

Com a criação de cluster HDInsight a pedido, não precisa de eliminar explicitamente o cluster HDInsight. O cluster é eliminado com base na configuração fornecida enquanto cria o pipeline. Mesmo depois de o cluster ser eliminado, as contas de armazenamento associadas ao cluster continuam a existir. Este comportamento é por design para que possa manter os seus dados intactos. No entanto, se não quiser persistir os dados, poderá apagar a conta de armazenamento que criou.

Ou pode eliminar todo o grupo de recursos que criou para este tutorial. Este processo elimina a conta de armazenamento e a Fábrica de Dados Azure 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 de grupo de recursos que criou no seu script PowerShell. Utilize o filtro se tiver demasiados grupos de recursos listados. Abre o grupo de recursos.

  4. No azulejo recursos , terá a conta de armazenamento por defeito e a fábrica de dados listada, 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.

    Azure portal delete resource group

  6. Introduza o nome do grupo de recursos para confirmar a eliminação e, em seguida, selecione Delete.

Passos seguintes

Neste artigo, aprendeu a usar a Azure Data Factory para criar um cluster HDInsight a pedido e executar empregos apache Hive. Avance para o próximo artigo para aprender a criar clusters HDInsight com configuração personalizada.