Usar Apache Sqoop com o Hadoop no HDInsight

Saiba como usar o Apache Sqoop no HDInsight para importar e exportar dados entre o cluster do HDInsight e o banco de dados SQL do Azure.

Embora o Apache Hadoop seja uma opção natural para processar dados não estruturados e semi-estruturados, como logs e arquivos, também pode ser necessário processar dados estruturados armazenados em bancos de dados relacionais.

Apache Sqoop é uma ferramenta projetada para transferir dados entre clusters do Hadoop e bancos de dados relacionais. Você pode usá-lo para importar dados de um RDBMS (sistema de gerenciamento de banco de dados relacional), como SQL Server, MySQL ou Oracle para o HDFS (Sistema de Arquivos Distribuído) do Hadoop, transformar os dados no Hadoop com o MapReduce ou o Apache Hive e, em seguida, exportar os dados de volta para um RDBMS. Neste artigo, você está usando o banco de dados SQL do Azure para seu banco de dados relacional.

Importante

Este artigo configura um ambiente de teste para realizar a transferência de dados. Escolha um dos métodos de transferência de dados para esse ambiente na seção Executar trabalhos do Sqoop.

Para as versões do Sqoop compatíveis com os clusters do HDInsight, confira as Novidades nas versões de cluster fornecidas pelo HDInsight

Compreender o cenário

O cluster HDInsight é fornecido com alguns dados de exemplo. Você usa estas duas amostras:

  • Um arquivo de log Log4j do Apache, localizado em /example/data/sample.log. Os seguintes logs são extraídos do arquivo:
2012-02-03 18:35:34 SampleClass6 [INFO] everything normal for id 577725851
2012-02-03 18:35:34 SampleClass4 [FATAL] system problem at id 1991281254
2012-02-03 18:35:34 SampleClass3 [DEBUG] detail for id 1304807656
...
  • Uma tabela do Hive chamada hivesampletable, que faz referência ao arquivo de dados localizado em /hive/warehouse/hivesampletable. A tabela contém alguns dados de dispositivo móvel.

    Campo Tipo de dados
    clientid string
    querytime string
    market string
    deviceplatform string
    devicemake string
    devicemodel string
    state string
    country string
    querydwelltime double
    sessionid BIGINT
    sessionpagevieworder BIGINT

Neste artigo, use esses dois conjuntos de dados para testar a importação e a exportação do Sqoop.

Configurar ambiente de teste

O cluster, o banco de dados SQL e outros objetos são criados no portal do Azure usando um modelo do Azure Resource Manager. O modelo pode ser encontrado em Modelos de início rápido do Azure. O modelo do Resource Manager chama um pacote bacpac para implantar os esquemas de tabela a um banco de dados SQL. Se você quiser usar um contêiner particular para os arquivos bacpac, use os seguintes valores no modelo:

"storageKeyType": "Primary",
"storageKey": "<TheAzureStorageAccountKey>",

Observação

Importar usando um modelo ou o Portal do Azure é compatível apenas com a importação de um arquivo BACPAC do Armazenamento de Blobs do Azure.

  1. Selecione a imagem a seguir para abrir o modelo do Resource Manager no portal do Azure.

    Botão Implantar no Azure para o novo cluster

  2. Insira as seguintes propriedades:

    Campo Valor
    Subscription Selecione sua assinatura do Azure na lista suspensa.
    Resource group Selecione seu grupo de recursos na lista suspensa ou crie um novo
    Local Selecione uma região na lista suspensa.
    Nome do cluster Insira um nome para o cluster Hadoop. Use somente letras minúsculas.
    Nome de usuário de logon do cluster Mantenha o valor admin preenchido previamente.
    Senha de logon do cluster Digite uma senha.
    Nome de Usuário SSH Mantenha o valor sshuser preenchido previamente.
    Senha SSH Digite uma senha.
    Logon de administrador do SQL Mantenha o valor sqluser preenchido previamente.
    Senha de administrador do SQL Digite uma senha.
    Localização de _artifacts Use o valor padrão, a menos que queira usar seu próprio arquivo bacpac em um local diferente.
    Token SaS de localização de _artifacts Deixe em branco.
    Nome do arquivo bacpac Use o valor padrão, a menos que queira usar seu próprio arquivo bacpac.
    Local Use o valor padrão.

    O nome do servidor SQL lógico é <ClusterName>dbserver. O nome do banco de dados é <ClusterName>db. O nome da conta de armazenamento padrão é e6qhezrh2pdqu.

  3. Selecione Concordo com os termos e as condições declarados acima.

  4. Selecione Comprar. Você poderá ver um novo bloco intitulado Como enviar a implantação para a implantação do modelo. É preciso sobre cerca de 20 minutos para criar o cluster e o banco de dados SQL.

Executar trabalhos do Sqoop

O HDInsight pode executar trabalhos de Sqoop usando vários métodos. Use a tabela a seguir para decidir qual método é o melhor para você e siga o link para obter o passo-a-passo.

Use se quiser... ...um shell interativo ...Processamento emlotes ... desse sistema operacional cliente
SSH ? ? Linux, Unix, Mac OS X ou Windows
SDK .NET para Hadoop   ? Windows (por enquanto)
PowerShell do Azure   ? Windows

Limitações

  • Exportação em massa — com o HDInsight baseado em Linux, o conector Sqoop usado para exportar dados ao Microsoft SQL Server ou ao banco de dados SQL do Azure, atualmente, não permite inserções em massa.
  • Envio em lote — Com HDInsight baseado em Linux, ao usar o comutador -batch ao executar inserções, o Sqoop realizará várias inserções em vez de operações de inserção em lotes.

Próximas etapas

Você aprendeu como usar o Sqoop. Para obter mais informações, consulte: