Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Verwenden von HBase-Snapshots
HBase nutzt eine integrierte Snapshot-command-runner.jar. AWS SDK für Java Weitere Informationen zu anderen Arten von HBase-Sicherungen finden Sie unter HBase Backup
Erstellen eines Snapshots mit einer Tabelle
hbase snapshot create -nsnapshotName-ttableName
Verwenden von command-runner.jar aus dem 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 für Java
HadoopJarStepConfig hbaseSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("hbase","snapshot","create","-n","snapshotName","-t","tableName");
Anmerkung
Wenn Ihr Snapshot-Name nicht eindeutig ist, schlägt der Erstellvorgang mit dem Rückgabecode -1 oder 255 fehl. Gegebenenfalls wird aber keine Fehlermeldung mit den Details zum Fehler angezeigt. Um den gleichen Snapshot-Namen zu verwenden, löschen Sie ihn und erstellen Sie ihn dann erneut.
Löschen eines Snapshots
hbase shell >> delete_snapshot 'snapshotName'
Anzeigen von Snapshot-Informationen
hbase snapshot info -snapshotsnapshotName
Einen Snapshot nach Amazon S3 exportieren
Wichtig
Wenn Sie keinen -mappers-Wert zum Exportieren eines Snapshots angeben, verwendet HBase eine beliebige Berechnung zur Bestimmung der Mapper-Anzahl. Dieser Wert kann je nach Tabellengröße sehr hoch sein, was sich negativ auf beim Export laufende Aufträge auswirkt. Aus diesem Grund empfehlen wir, den Parameter -mappers, den Parameter -bandwidth (der den Bandbreitenverbrauch in Megabyte pro Sekunde angibt) oder beide anzugeben, um die von der Exportoperation verwendeten Cluster-Ressourcen zu begrenzen. Alternativ können Sie die Operation zum Exportieren des Snapshots während eines Zeitraums mit geringer Auslastung ausführen.
hbase snapshot export -snapshotsnapshotName\ -copy-to s3://amzn-s3-demo-bucket/folder-mappers 2
Verwenden command-runner.jar von 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 für Java:
HadoopJarStepConfig hbaseImportSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("hbase","snapshot","export", "-snapshot","snapshotName","-copy-to", "s3://bucketName/folder", "-mappers","2","-bandwidth","50");
Importieren eines Snapshots von Amazon S3
Obwohl es sich hier um einen Import handelt, wird auch hier die HBase-Option export verwendet.
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
Verwendung command-runner.jar aus dem 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 für 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");
Wiederherstellen einer Tabelle von Snapshots innerhalb der HBase-Shell
hbase shell >> disabletableName>> restore_snapshotsnapshotName>> enabletableName
HBase unterstützt derzeit nicht alle Snapshot-Befehle in der HBase-Shell. Beispielsweise gibt es keine HBase-Befehlszeilenoption zum Wiederherstellen eines Snapshots. Deshalb müssen Sie diesen innerhalb einer Shell wiederherstellen. Dies bedeutet, dass command-runner.jar einen Bash-Befehl ausführen muss.
Anmerkung
Da der hier verwendete Befehl echo lautet, ist es möglich, dass Ihr Shell-Befehl trotzdem fehlschlägt, selbst wenn der von Amazon EMR ausgeführte Befehl den Beendigungscode 0 zurückgibt. Überprüfen Sie die Schrittprotokolle, wenn Sie einen Shell-Befehl als Schritt ausführen möchten.
echo 'disabletableName; \ restore_snapshotsnapshotName; \ enabletableName' | hbase shell
Nachfolgend finden Sie den Schritt mit der AWS CLI. Erstellen Sie zunächst die folgende snapshot.json-Datei:
[ { "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 für Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");