翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
HBase スナップショットの使用
HBase は、組み込みのスナップショットcommand-runner.jar
で を使用してステップを実行する方法を示します AWS SDK for Java。他のタイプのHBaseバックアップの詳細については、 HBaseドキュメントのHBase「バックアップ
テーブルを使用してスナップショットを作成する
hbase snapshot create -n
snapshotName
-ttableName
から command-runner.jar を使用する 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");
注記
スナップショット名が一意でない場合、作成処理はリターンコード -1
または 255
で失敗になりますが、問題点を記述したエラーメッセージが表示されない可能性があります。同じスナップショット名を使用するには、いったん削除してから再作成してください。
スナップショットを削除する
hbase shell >> delete_snapshot '
snapshotName
'
スナップショット情報を表示する
hbase snapshot info -snapshot
snapshotName
Amazon S3 にスナップショットをエクスポートする
重要
スナップショットのエクスポート時に-mappers
値を指定しない場合、 HBaseは任意の計算を使用してマッパーの数を決定します。この値は、テーブルサイズによっては非常に大きくなる場合があり、エクスポート時のジョブの実行に悪影響を及ぼします。したがって、-mappers
パラメータ、-bandwidth
パラメータ (帯域幅の消費をメガバイト/秒で指定)、または両方を指定してエクスポートオペレーションで使用されるクラスターリソースを制限することをお勧めします。または、使用量が低下する期間にスナップショットのエクスポートオペレーションを実行できます。
hbase snapshot export -snapshot
snapshotName
\ -copy-to s3://amzn-s3-demo-bucket
/folder
-mappers 2
command-runner.jar
から を使用する 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");
Amazon S3 からスナップショットをインポートする
これはインポートですが、ここで使用するHBaseオプションは のままです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
command-runner.jar
から を使用する 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");
HBase シェル内のスナップショットからテーブルを復元する
hbase shell >> disable
tableName
>> restore_snapshotsnapshotName
>> enabletableName
HBase は現在、HBaseシェルにあるすべてのスナップショットコマンドをサポートしているわけではありません。たとえば、スナップショットを復元するHBaseコマンドラインオプションがないため、シェル内で復元する必要があります。つまり、command-runner.jar
で Bash コマンドを実行する必要があります。
注記
ここで使用されているコマンドは であるためecho
、Amazon によって実行されたコマンドが終了0
コードをEMR返しても、シェルコマンドが失敗する可能性があります。ステップとしてシェルコマンドを実行する場合は、ステップログを確認してください。
echo 'disable
tableName
; \ restore_snapshotsnapshotName
; \ enabletableName
' | hbase shell
AWS CLIを使用するステップを次に示します。まず、以下の内容 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 for Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");