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 des instantanés HBase
HBase utilise une fonctionnalité d'instantanécommand-runner.jaraide du AWS CLI ou AWS SDK pour Java. Pour plus d'informations sur les autres types de sauvegardes HBase, consultez Sauvegarde HBase
Création d'un instantané à l'aide d'une table
hbase snapshot create -nsnapshotName-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 pour 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 -snapshotsnapshotName
Exportation d'un instantané vers Amazon S3
Important
Si vous ne spécifiez pas une valeur -mappers lors de l'exportation d'un instantané, HBase utilise un calcul arbitraire pour déterminer le nombre d'outils de mappage. 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 -snapshotsnapshotName\ -copy-to s3://amzn-s3-demo-bucket/folder-mappers 2
En utilisant command-runner.jar à partir du 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 pour 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'option HBase utilisée ici est encore 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
En utilisant command-runner.jar à partir du 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 pour 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");
Restauration d'une table à partir d'instantanés au sein du shell HBase
hbase shell >> disabletableName>> restore_snapshotsnapshotName>> enabletableName
HBase ne prend actuellement pas en charge toutes les commandes d'instantané trouvées dans le shell HBase. Par exemple, il n'existe aucune option de ligne de commande HBase pour restaurer un instantané. Vous devez donc le restaurer au sein d'un shell. Cela signifie que command-runner.jar doit exécuter une commande Bash.
Note
Comme la commande utilisée ici est echo, il est possible que votre commande shell échoue encore même si la commande exécutée par Amazon EMR retourne un code de sortie 0. Vérifiez les journaux d'étape si vous choisissez d'exécuter une commande shell en tant qu'étape.
echo 'disabletableName; \ 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 pour Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");