Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Utilizzo di snapshot HBase
HBase utilizza una funzionalità snapshotcommand-runner.jar o. AWS CLI AWS SDK per Java Per ulteriori informazioni su altri tipi di backup HBase, consulta la sezione HBase backup (Backup HBase)
Creazione di uno snapshot utilizzando una tabella
hbase snapshot create -nsnapshotName-ttableName
Utilizzo di command-runner.jar da: 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 per Java
HadoopJarStepConfig hbaseSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("hbase","snapshot","create","-n","snapshotName","-t","tableName");
Nota
Se il nome dello snapshot non è univoco, l'operazione di creazione non riesce e restituisce un codice di -1 o 255, ma non viene visualizzato alcun messaggio di errore che indica cosa si è verificato. Per usare lo stesso nome snapshot, eliminarlo e quindi ricrearlo.
Eliminazione di uno snapshot
hbase shell >> delete_snapshot 'snapshotName'
Visualizzazione delle informazioni relative allo snapshot
hbase snapshot info -snapshotsnapshotName
Esportazione di uno snapshot in Amazon S3
Importante
Se non si specifica un valore -mappers durante l'esportazione di uno snapshot, HBase utilizza un calcolo arbitrario per determinare il numero di mappatori. A seconda delle dimensioni della tabella, questo valore può essere molto grande e influenzare negativamente i processi in esecuzione durante l'esportazione. Per questo motivo, ti consigliamo di specificare il parametro -mappers, il parametro -bandwidth (che specifica l'utilizzo della larghezza di banda in MB al secondo) o entrambi per limitare le risorse del cluster utilizzate dall'operazione di esportazione. In alternativa, puoi eseguire l'operazione di esportazione dello snapshot durante un periodo di basso utilizzo.
hbase snapshot export -snapshotsnapshotName\ -copy-to s3://amzn-s3-demo-bucket/folder-mappers 2
Utilizzando command-runner.jar da 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 per Java:
HadoopJarStepConfig hbaseImportSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("hbase","snapshot","export", "-snapshot","snapshotName","-copy-to", "s3://bucketName/folder", "-mappers","2","-bandwidth","50");
Importazione di uno snapshot da Amazon S3
Benché si tratti di un'importazione, l'opzione HBase utilizzata qui è ancora 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
Utilizzando command-runner.jar da 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 per 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");
Ripristino di una tabella da snapshot all'interno della shell HBase
hbase shell >> disabletableName>> restore_snapshotsnapshotName>> enabletableName
HBase non supporta attualmente tutti i comandi della snapshot trovati nella shell HBase. Ad esempio, non esiste un'opzione della riga di comando HBase per ripristinare una snapshot, pertanto è necessario ripristinarla all'interno di una shell. Questo significa che command-runner.jar deve eseguire un comando Bash.
Nota
Poiché il comando utilizzato qui è echo, è possibile che il comando shell non riesca anche se il comando eseguito da Amazon EMR restituisce un codice di uscita 0. Se scegli di eseguire un comando della shell come una fase, controlla i log della fase.
echo 'disabletableName; \ restore_snapshotsnapshotName; \ enabletableName' | hbase shell
Di seguito è riportata la fase utilizzando AWS CLI. Innanzitutto, crea il seguente file 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 per Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");