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á.
Usando HBase instantâneos
HBase usa uma funcionalidade de captura instantâneacommand-runner.jar
o AWS CLI ou AWS SDK for Java. Para obter mais informações sobre outros tipos de HBase backups, consulte HBase backup
Criar um snapshot usando uma tabela
hbase snapshot create -n
snapshotName
-ttableName
Usando o command-runner.jar a partir do AWS 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 for 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 -snapshot
snapshotName
Exportar um snapshot para o Amazon S3
Importante
Se você não especificar um -mappers
valor ao exportar um instantâneo, HBase usa 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 -snapshot
snapshotName
\ -copy-to s3://amzn-s3-demo-bucket
/folder
-mappers 2
Usando command-runner.jar
a partir do AWS 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 for 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
Embora seja uma importação, a HBase opção 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 do AWS 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 for 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 a partir de instantâneos dentro do shell HBase
hbase shell >> disable
tableName
>> restore_snapshotsnapshotName
>> enabletableName
HBase atualmente não oferece suporte a todos os comandos de snapshot encontrados no HBase shell. Por exemplo, não há opção de HBase linha de comando para restaurar um snapshot, então 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 'disable
tableName
; \ 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 for Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig()
.withJar("command-runner.jar")
.withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");