HBase
 sql >> Teknologi Basis Data >  >> NoSQL >> HBase

Pengantar Snapshot Apache HBase

Rilis CDH (4.2) saat ini — Distribusi 100% open-source Apache Hadoop dan proyek terkait Cloudera (termasuk Apache HBase) — memperkenalkan fitur HBase baru, baru-baru ini mendarat di trunk, yang memungkinkan admin untuk mengambil snapshot dari yang ditentukan tabel.

Sebelum CDH 4.2, satu-satunya cara untuk mencadangkan atau mengkloning tabel adalah dengan menggunakan Salin/Ekspor Tabel, atau setelah menonaktifkan tabel, salin semua hfile di HDFS. Salin/Ekspor Tabel adalah seperangkat alat yang menggunakan MapReduce untuk memindai dan menyalin tabel tetapi dengan dampak langsung pada kinerja Server Wilayah. Menonaktifkan tabel akan menghentikan semua pembacaan dan penulisan, yang hampir selalu tidak dapat diterima.

Sebaliknya, snapshot HBase memungkinkan admin untuk mengkloning tabel tanpa salinan data dan dengan dampak minimal pada Server Wilayah. Mengekspor snapshot ke cluster lain tidak secara langsung memengaruhi Server Wilayah mana pun; export hanyalah distcp dengan sedikit logika tambahan.

Berikut adalah beberapa kasus penggunaan untuk snapshot HBase:

  • Pemulihan dari kesalahan pengguna/aplikasi
    • Pulihkan/Pulihkan dari status aman yang diketahui.
    • Lihat cuplikan sebelumnya dan gabungkan perbedaan secara selektif ke dalam produksi.
    • Simpan cuplikan tepat sebelum peningkatan atau perubahan aplikasi utama.
  • Mengaudit dan/atau melaporkan tampilan data pada waktu tertentu
    • Ambil data bulanan untuk tujuan kepatuhan.
    • Jalankan laporan akhir hari/bulan/kuartal.
  • Pengujian aplikasi
    • Uji skema atau perubahan aplikasi pada data yang serupa dengan yang ada di produksi dari snapshot, lalu buang. Misalnya:mengambil snapshot, membuat tabel baru dari konten snapshot (skema plus data), dan memanipulasi tabel baru dengan mengubah skema, menambahkan dan menghapus baris, dan seterusnya. (Tabel asli, snapshot, dan tabel baru tetap independen satu sama lain.)
  • Pembongkaran pekerjaan
    • Ambil snapshot, ekspor ke cluster lain, dan jalankan tugas MapReduce Anda. Karena snapshot ekspor beroperasi pada level HDFS, Anda tidak memperlambat cluster HBase utama Anda seperti halnya CopyTable.

Apa itu Snapshot?

Snapshot adalah kumpulan informasi metadata yang memungkinkan admin untuk kembali ke status tabel sebelumnya. Sebuah snapshot bukanlah salinan dari tabel; itu hanya daftar nama file dan tidak menyalin data. Pemulihan snapshot penuh berarti Anda kembali ke "skema tabel" sebelumnya dan Anda mendapatkan kembali data sebelumnya yang kehilangan semua perubahan yang dibuat sejak snapshot diambil.

Operasi

  • Ambil snapshot: Operasi ini mencoba mengambil snapshot pada tabel yang ditentukan. Operasi mungkin gagal jika wilayah bergerak selama penyeimbangan, pemisahan, atau penggabungan.
  • Menggandakan snapshot: Operasi ini membuat tabel baru menggunakan skema yang sama dan dengan data yang sama yang ada di snapshot yang ditentukan. Hasil dari operasi ini adalah tabel baru yang berfungsi penuh yang dapat dimodifikasi tanpa mempengaruhi tabel asli atau snapshot.
  • Pulihkan snapshot: Operasi ini mengembalikan skema tabel dan data ke status snapshot. (Catatan:operasi ini membuang semua perubahan yang dibuat sejak snapshot diambil.)
  • Hapus snapshot: Operasi ini menghapus snapshot dari sistem, mengosongkan ruang disk yang tidak dibagikan, tanpa memengaruhi klon atau snapshot lainnya.
  • Ekspor snapshot: Operasi ini menyalin data snapshot dan metadata ke cluster lain. Operasi hanya melibatkan HDFS sehingga tidak ada komunikasi dengan Master atau Server Wilayah, dan dengan demikian cluster HBase dapat down.

Zero-copy Snapshot, Restore, Clone

Perbedaan utama antara snapshot dan CopyTable/ExportTable adalah bahwa operasi snapshot hanya menulis metadata. Tidak ada salinan data besar yang terlibat.

Salah satu prinsip utama desain HBase adalah begitu file ditulis, file tersebut tidak akan pernah dimodifikasi. Memiliki file yang tidak dapat diubah berarti bahwa snapshot hanya melacak file yang digunakan pada saat operasi snapshot, dan selama pemadatan, snapshot bertanggung jawab untuk memberi tahu sistem bahwa file tidak boleh dihapus tetapi harus diarsipkan.

Prinsip yang sama berlaku untuk operasi Clone atau Restore. Karena file tidak dapat diubah, tabel baru dibuat hanya dengan "tautan" ke file yang dirujuk oleh snapshot.

Ekspor Snapshot adalah satu-satunya operasi yang memerlukan salinan data, karena cluster lain tidak memiliki file data.

Ekspor Cuplikan vs Salin/Ekspor Tabel

Selain jaminan konsistensi yang lebih baik yang dapat diberikan snapshot dibandingkan dengan Pekerjaan Salin/Ekspor, perbedaan utama antara Mengekspor Snapshot dan Menyalin/Mengekspor tabel adalah bahwa ExportSnapshot beroperasi pada tingkat HDFS. Ini berarti bahwa Server Master dan Wilayah tidak terlibat dalam operasi ini. Akibatnya, tidak ada cache yang tidak perlu untuk data yang dibuat dan tidak ada pemicu jeda GC tambahan karena jumlah objek yang dibuat selama proses pemindaian. Dampak kinerja pada cluster HBase berasal dari jaringan ekstra dan beban kerja disk yang dialami oleh DataNodes.

HBase Shell:Operasi Snapshot

Konfirmasikan bahwa dukungan snapshot diaktifkan dengan memeriksa apakah hbase.snapshot.enabled properti di hbase-site.xml disetel ke true. Untuk mengambil snapshot dari tabel tertentu, gunakan snapshot memerintah. (Tidak ada salinan file yang dilakukan)

hbase> snapshot ‘tableName’, ‘snapshotName’

Untuk membuat daftar semua snapshot, gunakan list_snapshot memerintah. itu akan menampilkan nama snapshot, tabel sumber, dan tanggal dan waktu pembuatan.

hbase> list_snapshots
SNAPSHOT               TABLE + CREATION TIME
 TestSnapshot          TestTable (Mon Feb 25 21:13:49 +0000 2013)

Untuk menghapus snapshot, gunakan delete_snapshot memerintah. Menghapus snapshot tidak memengaruhi tabel kloning atau snapshot berikutnya yang diambil.

hbase> delete_snapshot 'snapshotName'

Untuk membuat tabel baru dari snapshot tertentu (klon), gunakan clone_snapshot memerintah. Tidak ada penyalinan data yang dilakukan, sehingga Anda tidak menggunakan dua kali ruang untuk data yang sama.

hbase> clone_snapshot 'snapshotName', 'newTableName'

Untuk mengganti skema/data tabel saat ini dengan konten cuplikan tertentu, gunakan restore_snapshot  perintah.

hbase> restore_snapshot 'snapshotName'

Untuk mengekspor snapshot yang ada ke cluster lain, gunakan ExportSnapshot alat. Ekspor tidak memengaruhi beban kerja RegionServers, ini berfungsi di level HDFS dan Anda harus menentukan lokasi HDFS (hbase.rootdir dari cluster lain).

hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot
SnapshotName -copy-to hdfs:///srv2:8082/hbase

Batasan Saat Ini

Cuplikan bergantung pada beberapa asumsi, dan saat ini ada beberapa alat yang tidak sepenuhnya terintegrasi dengan fitur baru:

  • Menggabungkan wilayah yang direferensikan oleh snapshot menyebabkan hilangnya data pada snapshot dan tabel kloning.
  • Memulihkan tabel dengan replikasi aktif untuk tabel yang dipulihkan berakhir dengan dua cluster tidak sinkron. Tabel tidak dipulihkan pada replika.

Kesimpulan

Saat ini fitur snapshot mencakup semua fungsi dasar yang diperlukan, tetapi masih banyak pekerjaan yang harus dilakukan, termasuk metrik, integrasi UI Web, pengoptimalan penggunaan disk, dan banyak lagi.

Untuk mempelajari lebih lanjut tentang cara mengonfigurasi HBase dan menggunakan snapshot, tinjau dokumentasinya.

Matteo Bertozzi adalah Software Engineer di tim Platform, dan pembuat HBase.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Spark-on-HBase:konektor HBase berbasis DataFrame

  2. 20 Perbedaan Penting Antara Hadoop 2.x vs Hadoop 3.x

  3. Penyetelan Performa di MapReduce untuk Peningkatan Performa

  4. Pola Arsitektur untuk Pemrosesan Data Hampir Real-Time dengan Apache Hadoop

  5. bunuh server wilayah mati zombie