Use os comandos archiveTable e unarchiveTable do JindoTable para mover tabelas e partições do Hive entre classes de armazenamento do OSS sem depender do componente Jindo Namespace Service do SmartData.
Pré-requisitos
Antes de começar, verifique se você tem:
Um cluster E-MapReduce (EMR) com a versão EMR V3.36.0 ou posterior, ou EMR V5.2.0 ou posterior
Uma tabela particionada ou não particionada armazenada no OSS (somente os dados da tabela podem ser arquivados)
Acesso SSH ao cluster
Contexto
Os comandos originais archive e unarchive do JindoTable dependem do componente Jindo Namespace Service do SmartData. Os comandos archiveTable e unarchiveTable eliminam essa dependência. Isso significa que:
Eles funcionam em clusters sem o SmartData implantado, incluindo clusters autogerenciados.
Eles aceitam parâmetros de filtro para arquivamento multithread em grandes conjuntos de partições. Se o multithreading local for insuficiente, use o MapReduce para distribuir a carga pelo cluster.
Para consultar a documentação dos comandos originais, veja Use JindoTable.
Transições de classe de armazenamento
A tabela a seguir mostra as classes de armazenamento de destino de cada comando e quais arquivos são ignorados durante a operação.
archiveTable
|
Flag |
Classe de armazenamento de destino |
Arquivos ignorados |
|
|
Infrequent Access (IA) |
Archive, Cold Archive |
|
|
Archive |
Cold Archive |
|
|
Cold Archive |
Nenhum |
unarchiveTable
|
Flag |
Classe de armazenamento resultante |
Arquivos ignorados |
|
(nenhum) |
Standard |
Nenhum |
|
|
Infrequent Access (IA) |
Standard |
|
|
Archive |
Standard, IA |
|
|
Inalterada (apenas restauração temporária) |
Standard, IA, arquivos restaurados anteriormente |
|
|
Sem alteração (apenas verifica status de restauração) |
N/A |
A classe de armazenamento de dados Cold Archive só pode mudar para Standard, IA ou Archive após o desarquivamento completo dos dados.
Arquivar tabelas ou partições
Use o comando archiveTable para mover dados de tabelas do OSS para uma classe de armazenamento de menor custo.
Faça login no cluster via SSH. Consulte Log on to a cluster.
-
Execute o comando a seguir para visualizar a ajuda completa:
jindo table -help archiveTable -
Arquive tabelas ou partições com a seguinte sintaxe:
-archiveTable -t <dbName.tableName> \ -i/-a/-ca \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]
Parâmetros
|
Parâmetro |
Descrição |
Obrigatório |
|
|
Tabela a arquivar, no formato |
Sim |
|
|
Classe de armazenamento de destino: |
Sim |
|
|
Escopo do arquivamento: use |
Sim |
|
|
Arquiva somente tabelas ou partições criadas há pelo menos N dias. |
Não |
|
|
Número de threads paralelas para arquivamento. |
Não |
|
|
Usa Hadoop MapReduce em vez de multithreading local. |
Não |
|
|
Execução simulada: lista as partições que seriam arquivadas sem aplicar alterações. |
Não |
|
|
Diretório de trabalho para o job MapReduce. Requer permissões de leitura e escrita. O sistema cria arquivos temporários durante o job e os exclui automaticamente ao final. |
Não |
|
|
Diretório para arquivos de log. |
Não |
Exemplos
Visualizar quais partições serão arquivadas (execução simulada):
-archiveTable -t mydb.mytable -a -c " ds > 'd' " -e
Arquivar todas as partições de uma tabela para Cold Archive:
-archiveTable -t mydb.mytable -ca -fullTable
Arquivar partições em que a coluna ds é maior que 'd', criadas há mais de 30 dias:
-archiveTable -t mydb.mytable -a -c " ds > 'd' " -b 30
Desarquivar tabelas ou partições
Use o comando unarchiveTable para restaurar dados de tabelas do OSS a partir do armazenamento arquivado. A sintaxe é semelhante à do archiveTable, com duas diferenças: a flag de classe de armazenamento (-i/-a/-o/-cr) é opcional e a flag -notWait está disponível para restaurações de Cold Archive.
Faça login no cluster via SSH. Consulte Log on to a cluster.
-
Execute o comando a seguir para visualizar a ajuda completa:
jindo table -help unarchiveTable -
Desarquive tabelas ou partições com a seguinte sintaxe:
-archiveTable -t <dbName.tableName> \ [-i/-a/-o/-cr] \ [-notWait] \ [-c "<condition>" | -fullTable] \ [-b/-before <before days>] \ [-p/-parallel <parallelism>] \ [-mr/-mapReduce] \ [-e/-explain] \ [-w/-workingDir <working directory>] \ [-l/-logDir <log directory>]
Parâmetros específicos do unarchiveTable
Todos os parâmetros do archiveTable se aplicam. Os parâmetros a seguir são diferentes ou novos:
|
Parâmetro |
Descrição |
Obrigatório |
|
|
Classe de armazenamento de destino após o desarquivamento. Se omitido, os dados são restaurados para Standard. Veja Transições de classe de armazenamento para mais detalhes. |
Não |
|
|
Válido apenas ao desarquivar dados. Envie a solicitação de desarquivamento para dados Cold Archive e retorna imediatamente, sem aguardar a conclusão. |
Não |
Exemplos
Visualizar quais partições serão restauradas (execução simulada):
-archiveTable -t mydb.mytable -a -c " ds > 'd' " -e
Restaurar todas as partições para o armazenamento Standard:
-archiveTable -t mydb.mytable -fullTable
Restaurar partições para o armazenamento Archive, ignorando arquivos Standard e IA:
-archiveTable -t mydb.mytable -a -c " ds > 'd' "
Restaurar temporariamente partições Cold Archive sem alterar a classe de armazenamento:
-archiveTable -t mydb.mytable -o -c " ds > 'd' "
Envie uma solicitação de desarquivamento de Cold Archive sem aguardar:
-archiveTable -t mydb.mytable -fullTable -notWait
Verificar se os arquivos Archive ou Cold Archive foram totalmente restaurados:
-archiveTable -t mydb.mytable -cr -fullTable
Próximos passos
Para crie um cluster EMR, consulte Create a cluster.
Para usar os comandos originais de arquivamento do JindoTable (requer Jindo Namespace Service), consulte Use JindoTable.