Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utilisation de HBase snapshots
HBaseutilise une fonctionnalité de capture instantanéecommand-runner.jar
aide du AWS CLI ou AWS SDK for Java. Pour plus d'informations sur les autres types de HBase sauvegardes, consultez la section HBasesauvegarde
Création d'un instantané à l'aide d'une table
hbase snapshot create -n
snapshotName
-ttableName
En utilisant le fichier command-runner.jar depuis 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");
Note
Si votre nom d'instantané n'est pas unique, l'opération de création échoue avec un code de retour de -1
ou 255
, mais vous ne verrez peut-être pas un message d'erreur indiquant ce qui s'est passé. Pour utiliser le même nom d'instantané, supprimez-le et recréez-le.
Suppression d’un instantané
hbase shell >> delete_snapshot '
snapshotName
'
Affichage des informations d'instantané
hbase snapshot info -snapshot
snapshotName
Exportation d'un instantané vers Amazon S3
Important
Si vous ne spécifiez aucune -mappers
valeur lors de l'exportation d'un instantané, HBase utilise un calcul arbitraire pour déterminer le nombre de mappeurs. Cette valeur peut être très grande, selon la taille de votre table, ce qui affecte de façon négative des tâches exécutées selon l'exportation. Pour cette raison, nous vous recommandons de spécifier le paramètre -mappers
, le paramètre -bandwidth
(qui spécifie la consommation de bande passante en mégaoctets par seconde), ou les deux, pour limiter les ressources de cluster utilisées par l'opération d'exportation. Vous pouvez aussi exécuter l'opération d'instantané d'exportation durant une période de faible utilisation.
hbase snapshot export -snapshot
snapshotName
\ -copy-to s3://amzn-s3-demo-bucket
/folder
-mappers 2
En utilisant command-runner.jar
depuis 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");
Importer un instantané depuis Amazon S3
Bien qu'il s'agisse d'une importation, l'HBaseoption utilisée ici l'est toujoursexport
.
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
En utilisant command-runner.jar
depuis 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");
Restaurer une table à partir d'instantanés dans le shell HBase
hbase shell >> disable
tableName
>> restore_snapshotsnapshotName
>> enabletableName
HBasene prend actuellement pas en charge toutes les commandes de capture d'écran présentes dans le HBase shell. Par exemple, aucune option de HBase ligne de commande ne permet de restaurer un instantané. Vous devez donc le restaurer dans un shell. Cela signifie que command-runner.jar
doit exécuter une commande Bash.
Note
Comme la commande utilisée ici l'estecho
, il est possible que votre commande shell échoue même si la commande exécutée par Amazon EMR renvoie un code de 0
sortie. Vérifiez les journaux d'étape si vous choisissez d'exécuter une commande shell en tant qu'étape.
echo 'disable
tableName
; \ restore_snapshotsnapshotName
; \ enabletableName
' | hbase shell
Voici l'étape utilisant l' AWS CLI. Commencez par créer le fichier snapshot.json
suivant :
[ { "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");