Migração de carga de trabalho do Hive para 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 do Hive individual no HDInsight 4.0, confira Exportação/importação do Hive.
Pré-requisitos
Um novo cluster do HDInsight com as seguintes configurações:
- Seu sistema de arquivos padrão está na conta de armazenamento de destino. Confira Usar o Armazenamento do Azure com clusters do Azure HDInsight.
- Sua versão de cluster deve corresponder ao cluster de origem.
- Ele usa um novo banco de dados de metastore do Hive. Confira Usar repositórios de metadados externos.
Uma conta de armazenamento acessível para os clusters originais e novos. Confira em Adicionar contas de armazenamento adicionais ao HDInsight e Tipos de armazenamento e recursos os tipos de armazenamento secundário permitidos.
Estas são algumas opções:
- Adicionar a conta de armazenamento de destino ao cluster original.
- Adicionar a conta de armazenamento original ao novo cluster.
- Adicionar uma conta de armazenamento intermediária aos clusters originais e novos.
Como ele funciona
Executaremos uma ação de script para exportar as tabelas do Hive do cluster original para um diretório HDFS especificado. Aplique uma ação de script a 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 no sistema de arquivos padrão do novo cluster. As tabelas nativas também copiarão seus dados no armazenamento. As tabelas não nativas serão copiadas somente 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 do Hive padrão do cluster de destino. Consulte as propriedades do Hive hive.metastore.warehouse.external.dir
e hive.metastore.warehouse.dir
.
Os scripts não preservarão as permissões de arquivo personalizadas no cluster de destino.
Observação
Este guia dá suporte à 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 o
Views
, o Hive dá suporte ao comandoSHOW VIEWS
começando no Hive 2.2.0 no HDInsight 4.0. UseSHOW CREATE TABLE
para a definição de exibição. Para versões anteriores do Hive, consulte o banco de dados SQL do metastore para mostrar as exibições. - Para
Materialized Views
, use os comandosSHOW MATERIALIZED VIEWS
,DESCRIBE FORMATTED
eCREATE MATERIALIZED VIEW
. Confira Exibições materializadas para obter detalhes. - Para
Constraints
, com suporte começando no Hive 2.1.0 no HDInsight 4,0, useDESCRIBE EXTENDED
para listar as restrições de uma tabela eALTER TABLE
para adicionar restrições. Consulte Alterar restrições de tabela para obter detalhes.
Copiar tabelas do Hive
Aplique a ação de script "exportar" no cluster original com os campos a seguir.
Isso vai gerar e executar scripts do Hive intermediários. Eles serão salvos no
<hdfs-export-path>
especificado.Opcionalmente, use
--run-script=false
para personalizá-los antes de executar manualmente.Propriedade Valor URI do script Bash https://hdiconfigactions.blob.core.windows.net/linuxhivemigrationv01/export-hive-data-v01.sh
Tipo(s) de nó 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)
Após a conclusão bem-sucedida da exportação, aplique a ação de script "importar" no novo cluster com os campos a seguir.
Propriedade Valor URI do script Bash https://hdiconfigactions.blob.core.windows.net/linuxhivemigrationv01/import-hive-data-v01.sh
Tipo(s) de nó 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 raiz hive_contents.sh
no nó primário de cada cluster e compare o conteúdo do arquivo de saída /tmp/hive_contents.out
. Veja Conectar ao HDInsight (Apache Hadoop) usando SSH.
Limpar o uso de armazenamento adicional
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 hdfs dfs -rm -R
.
Opção: reduzir o uso de armazenamento adicional
A ação do script de exportação provavelmente dobra o uso do armazenamento devido ao Hive. No entanto, é possível limitar o uso de armazenamento adicional migrando manualmente, um banco de dados ou uma tabela de cada vez.
Especifique
--run-script=false
para ignorar a execução do script do Hive gerado. Os scripts de exportação e importação do Hive ainda seriam salvos no caminho de exportação.Execute trechos dos scripts de exportação e importação do Hive, banco de dados por banco de dados ou tabela por tabela, limpando manualmente o caminho de exportação após cada tabela ou banco de dados migrado.