Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menggunakan snapshot HBase
HBase menggunakan fungsi snapshotcommand-runner.jar dengan AWS CLI atau AWS SDK untuk Java. Untuk informasi selengkapnya tentang jenis lain dari cadangan HBase, lihat HBase cadangan
Buat snapshot menggunakan tabel
hbase snapshot create -nsnapshotName-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 untuk 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 -snapshotsnapshotName
Ekspor snapshot ke Amazon S3
penting
Jika Anda tidak menentukan -mappers nilai ketika mengekspor snapshot, HBase menggunakan perhitungan sewenang-wenang untuk menentukan jumlah pemeta. 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 -snapshotsnapshotName\ -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 untuk 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, opsi HBase yang digunakan di sini masih 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
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 untuk 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");
Mengembalikan tabel dari snapshot dalam shell HBase
hbase shell >> disabletableName>> restore_snapshotsnapshotName>> enabletableName
HBase saat ini tidak mendukung semua perintah snapshot yang ditemukan di HBase shell. Sebagai contoh, tidak ada HBase opsi baris perintah untuk memulihkan snapshot, sehingga Anda harus mengembalikannya 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 'disabletableName; \ 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 untuk Java:
HadoopJarStepConfig hbaseRestoreSnapshotConf = new HadoopJarStepConfig() .withJar("command-runner.jar") .withArgs("bash","-c","echo $'disable \"tableName\"; restore_snapshot \"snapshotName\"; enable \"snapshotName\"' | hbase shell");