Migrasikan Apache HBase ke versi baru dan akun penyimpanan
Artikel ini membahas cara memperbarui kluster Apache HBase Anda pada Azure HDInsight ke versi terbaru dengan akun Azure Storage yang berbeda.
Artikel ini hanya berlaku jika Anda perlu menggunakan Akun penyimpanan yang berbeda untuk kluster sumber dan tujuan Anda. Untuk meningkatkan versi dengan Akun penyimpanan yang sama untuk kluster sumber dan tujuan Anda, lihat Migrasikan Apache HBase ke versi baru.
Waktu henti saat proses peningkatan hanya beberapa menit saja. Waktu henti ini disebabkan oleh langkah-langkah untuk menghapus semua data dalam memori, dan waktu untuk mengonfigurasi dan memulai ulang layanan pada klaster baru. Hasil Anda akan bervariasi, tergantung pada jumlah node, jumlah data, dan variabel lainnya.
Meninjau kompatibilitas Apache HBase
Sebelum peningkatan Apache HBase, pastikan versi HBase pada klaster sumber dan tujuan kompatibel. Tinjau matriks kompatibilitas versi HBase dan catatan rilis pada Panduan Referensi HBase untuk memastikan aplikasi Anda kompatibel dengan versi baru.
Berikut ini adalah contoh matriks kompatibilitas. Y menunjukkan kompatibilitas dan N menunjukkan potensi inkompatibilitas:
Jenis kompatibilitas | Versi utama | Versi minor | Patch |
---|---|---|---|
Kompatibilitas kawat Klien-Server | N | Y | Y |
Kompatibilitas Server-Server | N | Y | Y |
Kompatibilitas format file | N | Y | Y |
Kompatibilitas API klien | N | Y | Y |
Kompatibilitas biner klien | N | N | Y |
Kompatibilitas API terbatas sisi-server | |||
Stabil | N | Y | Y |
Berkembang | N | N | Y |
Stabil | N | N | N |
Kompatibilitas dependensi | N | Y | Y |
Kompatibilitas operasional | N | N | Y |
Catatan rilis versi HBase harus menjelaskan setiap inkompabilitas yang terputus. Uji aplikasi Anda dalam klaster yang menjalankan versi target HDInsight dan HBase.
Untuk informasi selengkapnya tentang versi dan kompatibilitas HDInsight, lihat Versi Azure HDInsight.
Gambaran umum migrasi klaster Apache HBase
Untuk meningkatkan dan memigrasikan kluster Apache HBase Anda pada Azure HDInsight ke akun penyimpanan baru, selesaikan langkah-langkah dasar berikut. Untuk petunjuk lengkap, lihat langkah dan perintah terperinci.
Siapkan klaster sumber:
- Hentikan penyerapan data.
- Bersihkan
memstore
data. - Hentikan HBase dari Ambari.
- Untuk klaster dengan penulisan yang dipercepat, cadangkan direktori Write Ahead Log (WAL).
Siapkan klaster tujuan:
- Buat klaster tujuan.
- Hentikan HBase dari Ambari.
- Bersihkan data Zookeeper.
- Alihkan pengguna ke HBase.
Selesikan migrasi:
- Bersihkan sistem file tujuan, migrasikan data, dan hapus
/hbase/hbase.id
. - Bersihkan dan migrasikan WAL.
- Mulai semua layanan dari klaster tujuan Ambari.
- Verifikasi HBase.
- Hapus klaster sumber.
Langkah-langkah dan perintah migrasi terperinci
Gunakan langkah-langkah dan perintah terperinci ini untuk memigrasikan kluster Apache HBase Anda dengan akun penyimpanan baru.
Siapkan klaster sumber
Hentikan penyerapan pada klaster HBase sumber.
Hapus klaster HBase sumber yang sedang Anda tingkatkan.
HBase menulis data masuk ke penyimpanan dalam memori yang
memstore
disebut .memstore
Setelah mencapai ukuran tertentu, HBase menghapusnya ke disk untuk penyimpanan jangka panjang di akun penyimpanan kluster. Menghapus kluster sumber setelah peningkatan juga menghapus data apa pun dimemstores
. Untuk menyimpan data, hapus setiap tabelmemstore
secara manual ke disk sebelum meningkatkan.Anda dapat menghapus data dengan menjalankan skrip flush_all_tables.sh dari repositori
memstore
GitHub hbase-utils.Anda juga dapat menghapus
memstore
data dengan menjalankan perintah shell HBase berikut dari dalam kluster HDInsight:hbase shell flush "<table-name>"
Masuk ke Apache Ambari pada kluster sumber dengan
https://<OLDCLUSTERNAME>.azurehdinsight.net
, dan hentikan layanan HBase.Ketika konfirmasi diminta, pilih kotak untuk mengaktifkan mode pemeliharaan pada HBase.
Untuk informasi selengkapnya tentang terhubung ke dan penggunaan Ambari, lihat Mengelola klaster HDInsight dengan menggunakan Ambari Web UI.
Jika klaster HBase sumber Anda tidak memiliki fitur Penulisan yang Dipercepat, lewati langkah ini. Untuk kluster HBase sumber dengan Penulisan yand Dipercepat, cadangkan direktori WAL di bawah HDFS dengan menjalankan perintah berikut dari sesi SSH pada semua kluster sumber simpul Zookeeper atau simpul pekerja.
hdfs dfs -mkdir /hbase-wal-backup hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
Siapkan klaster tujuan
Pada portal Microsoft Azure, siapkan kluster HDInsight tujuan baru yang menggunakan akun penyimpanan yang berbeda dari kluster sumber Anda.
Masuk ke Apache Ambari pada kluster baru di
https://<NEWCLUSTERNAME>.azurehdinsight.net
, dan hentikan layanan HBase.Bersihkan data Zookeeper pada kluster tujuan dengan menjalankan perintah berikut di simpul Zookeeper atau simpula pekerja:
hbase zkcli rmr /hbase-unsecure quit
Alihkan pengguna ke HBase dengan menjalankan
sudo su hbase
.
Bersihkan dan migrasikan sistem file dan WAL
Jalankan perintah berikut, tergantung pada versi HDI sumber Anda dan apakah klaster sumber dan tujuan memiliki Accelerated Writes (Penulisan yang Dipercepat). Kluster tujuan selalu HDI versi 4.0, karena HDI 3.6 berada dalam Dukungan dasar dan tidak direkomendasikan untuk kluster baru.
- Kluster sumber adalah HDI 3.6 dengan Penulisan yang Dipercepat, dan kluster tujuan memiliki Penulisan yang Dipercepat.
- Klaster sumber adalah HDI 3.6 tanpa Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes.
- Klaster sumber adalah HDI 3.6 tanpa Accelerated Writes dan klaster tujuan tidak memiliki Accelerated Writes.
- Klaster sumber adalah HDI 4.0 dengan Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes.
- Klaster sumber adalah HDI 4.0 tanpa Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes.
- Kluster sumber adalah HDI 4.0 tanpa Penulisan yang Dipercepat, dan kluster tujuan tidak memiliki Penulisan yang Dipercepat.
Untuk <container-endpoint-url>
akun penyimpanan adalah https://<storageaccount>.blob.core.windows.net/<container-name>
. Teruskan token SAS ke akun penyimpanan di bagian paling akhir URL.
- Untuk
<container-fullpath>
jenis penyimpanan WASB adalahwasbs://<container-name>@<storageaccount>.blob.core.windows.net
- Untuk
<container-fullpath>
jenis penyimpanan Azure Data Lake Storage Gen2 adalahabfs://<container-name>@<storageaccount>.dfs.core.windows.net
.
Salin perintah
Perintah salinan HDFS adalah hdfs dfs <copy properties starting with -D> -cp
Gunakan hadoop distcp
untuk performa yang lebih baik saat menyalin file yang tidak ada dalam blob halaman: hadoop distcp <copy properties starting with -D>
Untuk meneruskan kunci akun penyimpanan, gunakan:
-Dfs.azure.account.key.<storageaccount>.blob.core.windows.net='<storage account key>'
-Dfs.azure.account.keyprovider.<storageaccount>.blob.core.windows.net=org.apache.hadoop.fs.azure.SimpleKeyProvider
Anda juga dapat menggunakan AzCopy untuk performa yang lebih baik saat menyalin file data HBase.
Jalankan perintah AzCopy:
azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
Jika akun penyimpanan tujuan adalah penyimpanan Azure Blob, lakukan langkah ini setelah menyalin. Jika akun penyimpanan tujuan adalah Data Lake Storage Gen2, lewati langkah ini.
Driver Hadoop WASB menggunakan beberapa blob khusus berukuran 0 yang sesuai dengan setiap direktori. AzCopy melompati beberapa file ini saat penyalinan. Beberapa operasi WASB menggunakan semua blob ini, jadi Anda harus membuatnya di kluster tujuan. Untuk membuat beberapa blob, jalankan perintah Hadoop berikut dari simpul mana pun di kluster tujuan:
sudo -u hbase hadoop fs -chmod -R 0755 /hbase
Anda dapat mengunduh AzCopy dari Memulai dengan AzCopy. Untuk informasi selengkapnya tentang penggunaan AzCopy, lihat salinan azcopy.
Kluster sumber adalah HDI 3.6 atau HDI 4.0 dengan Penulisan yang Dipercepat, dan kluster tujuan memiliki Penulisan yang Dipercepat
Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Hapus
hbase.id
dengan menjalankanhdfs dfs -rm /hbase/hbase.id
Untuk membersihkan dan memigrasikan WAL, jalankan perintah berikut:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://<destination-cluster>/hbasewal
Klaster sumber adalah HDI 3.6 tanpa Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes
Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:
hdfs dfs -rm -r /hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase / hdfs dfs -rm -r /hbase/*WALs
Hapus
hbase.id
dengan menjalankanhdfs dfs -rm /hbase/hbase.id
Untuk membersihkan dan memigrasikan WAL, jalankan perintah berikut:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs hdfs://<destination-cluster>/hbasewal
Kluster sumber adalah HDI 3.6 tanpa Penulisan yang Dipercepat, dan kluster tujuan tidak memiliki Penulisan yang Dipercepat
Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:
hdfs dfs -rm -r /hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase / hdfs dfs -rm -r /hbase/*WALs
Hapus
hbase.id
dengan menjalankanhdfs dfs -rm /hbase/hbase.id
Untuk membersihkan dan memigrasikan WAL, jalankan perintah berikut:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs,/hbase-wals" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals
Klaster sumber adalah HDI 4.0 tanpa Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes
Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Hapus
hbase.id
dengan menjalankanhdfs dfs -rm /hbase/hbase.id
Untuk membersihkan dan memigrasikan WAL, jalankan perintah berikut:
hdfs dfs -rm -r hdfs://<destination-cluster>/hbasewal hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals hdfs://<destination-cluster>/hbasewal
Kluster sumber adalah HDI 4.0 tanpa Penulisan yang Dipercepat, dan kluster tujuan tidak memiliki Penulisan yang Dipercepat
Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:
hdfs dfs -rm -r /hbase hadoop distcp <source-container-fullpath>/hbase /
Hapus
hbase.id
dengan menjalankanhdfs dfs -rm /hbase/hbase.id
Untuk membersihkan dan memigrasikan WAL, jalankan perintah berikut:
hdfs dfs -rm -r /hbase-wals/* hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /
Menyelesaikan migrasi
Pada kluster tujuan, simpan perubahan Anda dan hidupkan ulang semua layanan yang diperlukan seperti yang ditunjukkan oleh Ambari.
Arahkan aplikasi Anda ke klaster tujuan.
Catatan
Nama DNS statik untuk aplikasi Anda berubah saat Anda melakukan peningkatan. Daripada membuat kode permanen (hard-coding) untuk nama DNS ini, Anda bisa mengonfigurasi CNAME pada pengaturan DNS nama domain Anda yang menunjuk ke nama klaster. Opsi lain adalah menggunakan file konfigurasi untuk aplikasi yang dapat Anda perbarui tanpa melakukan penyebaran ulang.
Mulai penyerapan.
Verifikasi konsistensi HBase dan operasi Bahasa Definisi Data (Data Definition Language/DDL) dan Bahasa Manipulasi Data (Data Manipulation Language/DML) sederhana.
Jika klaster tujuan memuaskan, hapus klaster sumber.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang Apache HBase dan peningkatan klaster HDInsight, lihat artikel berikut ini: