기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
스냅샷 사용 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://bucketName
/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://bucketName
/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://
bucketName
/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://bucketName
/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");