Partilhar via


Migração da carga de trabalho do Hive para uma nova conta no Armazenamento do Azure

Saiba como usar ações de script para copiar tabelas do Hive entre contas de armazenamento no HDInsight. Isso pode ser útil ao migrar para o Azure Data Lake Storage Gen2.

Para copiar manualmente uma tabela individual do Hive no HDInsight 4.0, consulte Exportar/importar o Hive.

Pré-requisitos

  • Um novo cluster HDInsight com as seguintes configurações:

    • Seu sistema de arquivos padrão está na conta de armazenamento de destino. Consulte Usar o armazenamento do Azure com clusters do Azure HDInsight.
    • Sua versão de cluster deve corresponder à do cluster de origem.
    • Ele usa um novo banco de dados de metastore externo do Hive. Consulte Usar repositórios de metadados externos.
  • Uma conta de armazenamento acessível a clusters originais e novos. Consulte Adicionar contas de armazenamento adicionais ao HDInsight e Tipos e recursos de armazenamento para obter os tipos de armazenamento secundário permitidos.

    Seguem-se algumas opções:

    • Adicione a conta de armazenamento de destino ao cluster original.
    • Adicione a conta de armazenamento original ao novo cluster.
    • Adicione uma conta de armazenamento intermediário aos clusters original e novo.

Como funciona

Executaremos uma ação de script para exportar tabelas do Hive do cluster original para um diretório HDFS especificado. Consulte Ação de script para um cluster em execução.

Em seguida, executaremos outra ação de script no novo cluster para importar as tabelas do Hive do diretório HDFS.

O script recriará as tabelas para o sistema de arquivos padrão do novo cluster. As tabelas nativas também copiarão seus dados no armazenamento. As tabelas não nativas copiarão apenas por definição. Consulte Manipuladores de armazenamento do Hive para obter detalhes sobre tabelas não nativas.

O caminho das tabelas externas que não estão no diretório de depósito do Hive será preservado. Outras tabelas serão copiadas para o caminho Hive padrão do cluster de destino. Consulte Propriedades hive.metastore.warehouse.external.dir do Hive e hive.metastore.warehouse.dir.

Os scripts não preservarão permissões de arquivo personalizadas no cluster de destino.

Nota

Este guia suporta a cópia de objetos de metadados relacionados a bancos de dados, tabelas e partições do Hive. Outros objetos de metadados devem ser recriados manualmente.

  • Para Viewso , o Hive suporta comandos SHOW VIEWS a partir do Hive 2.2.0 no HDInsight 4.0. Use SHOW CREATE TABLE para definição de exibição. Para versões anteriores do Hive, consulte o banco de dados SQL do metastore para mostrar exibições.
  • Para Materialized Views, use os comandos SHOW MATERIALIZED VIEWS, DESCRIBE FORMATTEDe CREATE MATERIALIZED VIEW. Consulte Visualizações materializadas para obter detalhes.
  • Para Constraints, com suporte a partir do Hive 2.1.0 no HDInsight 4.0, use DESCRIBE EXTENDED para listar restrições para uma tabela e use ALTER TABLE para adicionar restrições. Consulte Alterar restrições de tabela para obter detalhes.

Copiar tabelas Hive

  1. Aplique a ação de script "exportar" no cluster original com os seguintes campos.

    Isso gerará e executará scripts intermediários do Hive. Eles serão salvos no arquivo <hdfs-export-path>.

    Opcionalmente, use --run-script=false para personalizá-los antes de executá-los manualmente.

    Property valor
    Bash script URI https://hdiconfigactions.blob.core.windows.net/linuxhivemigrationv01/export-hive-data-v01.sh
    Tipo(s) de nó(s) Head
    Parâmetros <hdfs-export-path> --run-script
    usage: generate Hive export and import scripts and export Hive data to specified HDFS path
           [--run-script={true,false}]
           hdfs-export-path
    
    positional arguments:
    
        hdfs-export-path      remote HDFS directory to write export data to
    
    optional arguments:
        --run-script={true,false}
                            whether to execute the generated Hive export script
                            (default: true)
    
  2. Após a conclusão bem-sucedida da exportação, aplique a ação de script "importar" no novo cluster com os seguintes campos.

    Property valor
    Bash script URI https://hdiconfigactions.blob.core.windows.net/linuxhivemigrationv01/import-hive-data-v01.sh
    Tipo(s) de nó(s) Head
    Parâmetros <hdfs-export-path>
    usage: download Hive import script from specified HDFS path and execute it
           hdfs-export-path
    
    positional arguments:
    
      hdfs-export-path      remote HDFS directory to download Hive import script from
    
    

Verificação

Baixe e execute o script como usuário hive_contents.sh raiz no nó primário de cada cluster e compare o conteúdo do arquivo /tmp/hive_contents.outde saída. Consulte Conectar-se ao HDInsight (Apache Hadoop) usando SSH.

Limpar o uso adicional de armazenamento

Depois que a migração de armazenamento for concluída e verificada, você poderá excluir os dados no caminho de exportação do HDFS especificado.

A opção é usar o comando hdfs dfs -rm -RHDFS .

Opção: reduzir o uso adicional de armazenamento

A ação de script de exportação provavelmente dobra o uso de armazenamento devido ao Hive. No entanto, é possível limitar o uso de armazenamento adicional migrando manualmente, um banco de dados ou tabela de cada vez.

  1. Especifique --run-script=false para ignorar a execução do script Hive gerado. Os scripts de exportação e importação do Hive ainda seriam salvos no caminho de exportação.

  2. Execute trechos dos scripts de exportação e importação do Hive banco por banco de dados ou tabela por tabela, limpando manualmente o caminho de exportação após cada banco de dados ou tabela migrada.

Próximos passos