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.
Schnappschüsse verwenden HBase
HBaseverwendet eine integrierte Snapshot-Funktionalitätcommand-runner.jar
. Weitere Informationen zu anderen Arten von HBase Backups finden Sie in der HBase Dokumentation unter HBaseBackup
Erstellen eines Snapshots mit einer Tabelle
hbase snapshot create -n
snapshotName
-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 for 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 -snapshot
snapshotName
Einen Snapshot nach Amazon S3 exportieren
Wichtig
Wenn Sie beim Exportieren eines Snapshots keinen -mappers
Wert angeben, HBase verwendet eine willkürliche Berechnung, um die Anzahl der Mapper zu ermitteln. 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 -snapshot
snapshotName
\ -copy-to s3://amzn-s3-demo-bucket
/folder
-mappers 2
Unter Verwendung 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 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");
Importieren eines Snapshots von Amazon S3
Obwohl es sich um einen Import handelt, ist die hier verwendete HBase Option immer noch gültigexport
.
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 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");
Stellen Sie eine Tabelle aus Snapshots in der HBase Shell wieder her
hbase shell >> disable
tableName
>> restore_snapshotsnapshotName
>> enabletableName
HBaseunterstützt derzeit nicht alle Snapshot-Befehle in der HBase Shell. Beispielsweise gibt es keine HBase Befehlszeilenoption zum Wiederherstellen eines Snapshots, sodass Sie ihn in einer Shell wiederherstellen müssen. Dies bedeutet, dass command-runner.jar
einen Bash-Befehl ausführen muss.
Anmerkung
Da der hier verwendete Befehl lautetecho
, ist es möglich, dass Ihr Shell-Befehl auch dann fehlschlägt, wenn der von Amazon ausgeführte Befehl einen 0
Exit-Code EMR zurückgibt. Überprüfen Sie die Schrittprotokolle, wenn Sie einen Shell-Befehl als Schritt ausführen möchten.
echo 'disable
tableName
; \ 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 for Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");