As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usar snapshots do HBase
O HBase usa uma funcionalidade interna de snapshotscommand-runner.jar o AWS CLI ouAWS SDK para Java. Para obter mais informações sobre outros tipos de backups do HBase, consulte HBase backup
Criar um snapshot usando uma tabela
hbase snapshot create -nsnapshotName-ttableName
Usando o command-runner.jar a partir doAWS CLI:
aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps Name="HBase Shell Step",Jar="command-runner.jar",\ Args=[ "hbase", "snapshot", "create","-n","snapshotName","-t","tableName"]
AWS SDK para Java
HadoopJarStepConfig hbaseSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("hbase","snapshot","create","-n","snapshotName","-t","tableName");
nota
Se o nome do snapshot não for exclusivo, a operação de criação falhará com um código de retorno -1 ou 255, mas talvez você não veja uma mensagem de erro afirmando o que deu errado. Para usar o mesmo nome de snapshot, exclua-o e recrie-lo em seguida.
Excluir um snapshot
hbase shell >> delete_snapshot 'snapshotName'
Exibir informações do snapshot
hbase snapshot info -snapshotsnapshotName
Exportar um snapshot para o Amazon S3
Importante
Se você não especificar um valor -mappers ao exportar um snapshot, o HBase usará um cálculo arbitrário para determinar o número de mapeadores. Esse valor pode ser muito grande, dependendo do tamanho da tabela, o que afeta negativamente os trabalhos em execução durante a exportação. Por esse motivo, recomendamos que você especifique o parâmetro -mappers, o parâmetro -bandwidth (que indica o consumo de largura de banda em megabytes por segundo) ou ambos para limitar os recursos de cluster usados pela operação de exportação. Como alternativa, você pode executar a operação de exportação de snapshot durante um período de baixa utilização.
hbase snapshot export -snapshotsnapshotName\ -copy-to s3://amzn-s3-demo-bucket/folder-mappers 2
Usando command-runner.jar a partir doAWS CLI:
aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps Name="HBase Shell Step",Jar="command-runner.jar",\ Args=[ "hbase", "snapshot", "export","-snapshot","snapshotName","-copy-to","s3://amzn-s3-demo-bucket/folder","-mappers","2","-bandwidth","50"]
AWS SDK para Java:
HadoopJarStepConfig hbaseImportSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("hbase","snapshot","export", "-snapshot","snapshotName","-copy-to", "s3://bucketName/folder", "-mappers","2","-bandwidth","50");
Importar um snapshot do Amazon S3
Apesar de ser uma importação, a opção do HBase usada aqui é ainda export.
sudo -u hbase hbase snapshot export \ -D hbase.rootdir=s3://amzn-s3-demo-bucket/folder\ -snapshotsnapshotName\ -copy-to hdfs://masterPublicDNSName:8020/user/hbase \ -mappers 2
Usando command-runner.jar a partir doAWS CLI:
aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps Name="HBase Shell Step",Jar="command-runner.jar", \ Args=["sudo","-u","hbase","hbase snapshot export","-snapshot","snapshotName", \ "-D","hbase.rootdir=s3://amzn-s3-demo-bucket/folder", \ "-copy-to","hdfs://masterPublicDNSName:8020/user/hbase","-mappers","2","-chmod","700"]
AWS SDK para Java:
HadoopJarStepConfig hbaseImportSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("sudo","-u","hbase","hbase","snapshot","export", "-D","hbase.rootdir=s3://path/to/snapshot", "-snapshot","snapshotName","-copy-to", "hdfs://masterPublicDNSName:8020/user/hbase", "-mappers","2","-chuser","hbase");
Restaurar uma tabela de snapshots dentro do shell do HBase
hbase shell >> disabletableName>> restore_snapshotsnapshotName>> enabletableName
Atualmente, o HBase não oferece suporte a todos os comandos de snapshot encontrados no shell do HBase. Por exemplo, não há uma opção de linha de comando do HBase para restaurar um snapshot e, portanto, você deve restaurá-lo em um shell. Isso significa que command-runner.jar deve executar um comando Bash.
nota
Como o comando usado aqui é echo, é possível que seu comando shell ainda falhe, mesmo que o comando executado pelo Amazon EMR retorne um código de saída 0. Verifique os logs de etapas se você optar por executar um comando shell como um etapa.
echo 'disabletableName; \ restore_snapshotsnapshotName; \ enabletableName' | hbase shell
Veja a seguir a etapa usando a AWS CLI. Primeiro, crie o seguinte arquivo snapshot.json:
[ { "Name": "restore", "Args": ["bash", "-c", "echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"tableName\"' | hbase shell"], "Jar": "command-runner.jar", "ActionOnFailure": "CONTINUE", "Type": "CUSTOM_JAR" } ]
aws emr add-steps --cluster-id j-2AXXXXXXGAPLF \ --steps file://./snapshot.json
AWS SDK para Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");