기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
HBase 스냅샷 사용
HBase는 기본 제공 스냅샷command-runner.jar
AWS CLI 또는를 사용하여 단계를 통해 이러한 명령을 실행하는 방법을 보여줍니다 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 명령을 실행해야 합니다.
참고
여기에 사용되는 명령은 이므로 Amazon에서 실행하는 명령echo
이 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");