Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan HBase snapshot
HBase menggunakan fungsionalitas snapshotcommand-runner.jar
dengan AWS CLI atau AWS SDK for Java. Untuk informasi selengkapnya tentang jenis HBase cadangan lainnya, lihat HBase pencadangan
Buat snapshot menggunakan tabel
hbase snapshot create -n
snapshotName
-ttableName
Menggunakan command-runner.jar dari 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");
catatan
Jika nama snapshot Anda tidak unik, pembuatan operasi gagal dengan kode kembali -1
atau 255
tetapi Anda mungkin tidak melihat pesan kesalahan yang menyatakan apa yang salah. Untuk menggunakan nama snapshot yang sama, Hapus dan kemudian buat ulang.
Hapus snapshot
hbase shell >> delete_snapshot '
snapshotName
'
Lihat info snapshot
hbase snapshot info -snapshot
snapshotName
Ekspor snapshot ke Amazon S3
penting
Jika Anda tidak menentukan -mappers
nilai saat mengekspor snapshot, HBase gunakan perhitungan arbitrer untuk menentukan jumlah mapper. Nilai ini bisa sangat besar tergantung ukuran tabel Anda, yang secara negatif mempengaruhi tugas yang berjalan selama ekspor. Untuk alasan ini, kami menyarankan Anda untuk menentukan -mappers
parameter -bandwidth
parameter (yang menentukan konsumsi bandwidth dalam megabyte per detik), atau keduanya untuk membatasi klaster sumber daya yang digunakan oleh operasi ekspor. Atau, Anda dapat menjalankan operasi snapshot ekspor selama periode penggunaan rendah.
hbase snapshot export -snapshot
snapshotName
\ -copy-to s3://amzn-s3-demo-bucket
/folder
-mappers 2
Menggunakan command-runner.jar
dari 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");
Impor snapshot dari Amazon S3
Meskipun ini adalah impor, HBase opsi yang digunakan di sini masihexport
.
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
Menggunakan command-runner.jar
dari 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");
Kembalikan tabel dari snapshot di dalam shell HBase
hbase shell >> disable
tableName
>> restore_snapshotsnapshotName
>> enabletableName
HBase saat ini tidak mendukung semua perintah snapshot yang ditemukan di HBase shell. Misalnya, tidak ada opsi HBase baris perintah untuk memulihkan snapshot, jadi Anda harus mengembalikannya di dalam shell. Ini berarti bahwa command-runner.jar
harus menjalankan perintah Bash.
catatan
Karena perintah yang digunakan di sini adalah echo
, adalah mungkin bahwa perintah shell Anda masih akan gagal bahkan jika perintah dijalankan oleh Amazon EMR mengembalikan 0
kode keluar. Periksa log langkah jika Anda memilih untuk menjalankan perintah shell sebagai langkah.
echo 'disable
tableName
; \ restore_snapshotsnapshotName
; \ enabletableName
' | hbase shell
Berikut adalah langkah menggunakan AWS CLI. Pertama, buat file snapshot.json
berikut ini:
[ { "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");