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:

  1. Hentikan penyerapan data.
  2. Bersihkan memstore data.
  3. Hentikan HBase dari Ambari.
  4. Untuk klaster dengan penulisan yang dipercepat, cadangkan direktori Write Ahead Log (WAL).

Siapkan klaster tujuan:

  1. Buat klaster tujuan.
  2. Hentikan HBase dari Ambari.
  3. Bersihkan data Zookeeper.
  4. Alihkan pengguna ke HBase.

Selesikan migrasi:

  1. Bersihkan sistem file tujuan, migrasikan data, dan hapus /hbase/hbase.id.
  2. Bersihkan dan migrasikan WAL.
  3. Mulai semua layanan dari klaster tujuan Ambari.
  4. Verifikasi HBase.
  5. 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

  1. Hentikan penyerapan pada klaster HBase sumber.

  2. Hapus klaster HBase sumber yang sedang Anda tingkatkan.

    HBase menulis data masuk ke penyimpanan dalam memori yang memstoredisebut . 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 di memstores. Untuk menyimpan data, hapus setiap tabel memstore secara manual ke disk sebelum meningkatkan.

    Anda dapat menghapus data dengan menjalankan skrip flush_all_tables.sh dari repositori memstoreGitHub hbase-utils.

    Anda juga dapat menghapus memstore data dengan menjalankan perintah shell HBase berikut dari dalam kluster HDInsight:

    hbase shell
    flush "<table-name>"
    
  3. Masuk ke Apache Ambari pada kluster sumber dengan https://<OLDCLUSTERNAME>.azurehdinsight.net, dan hentikan layanan HBase.

  4. 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.

  5. 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

  1. Pada portal Microsoft Azure, siapkan kluster HDInsight tujuan baru yang menggunakan akun penyimpanan yang berbeda dari kluster sumber Anda.

  2. Masuk ke Apache Ambari pada kluster baru di https://<NEWCLUSTERNAME>.azurehdinsight.net, dan hentikan layanan HBase.

  3. Bersihkan data Zookeeper pada kluster tujuan dengan menjalankan perintah berikut di simpul Zookeeper atau simpula pekerja:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    
  4. 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.

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 adalah wasbs://<container-name>@<storageaccount>.blob.core.windows.net
  • Untuk <container-fullpath> jenis penyimpanan Azure Data Lake Storage Gen2 adalah abfs://<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.

  1. Jalankan perintah AzCopy:

    azcopy cp "<source-container-endpoint-url>/hbase" "<target-container-endpoint-url>" --recursive
    
  2. 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

  1. Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Hapus hbase.id dengan menjalankan hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. 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
    
  2. Hapus hbase.id dengan menjalankan hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. 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
    
  2. Hapus hbase.id dengan menjalankan hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Hapus hbase.id dengan menjalankan hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. Untuk membersihkan sistem file dan memigrasikan data, jalankan perintah berikut:

    hdfs dfs -rm -r /hbase 
    hadoop distcp <source-container-fullpath>/hbase /
    
  2. Hapus hbase.id dengan menjalankan hdfs dfs -rm /hbase/hbase.id

  3. 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

  1. Pada kluster tujuan, simpan perubahan Anda dan hidupkan ulang semua layanan yang diperlukan seperti yang ditunjukkan oleh Ambari.

  2. 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.

  3. Mulai penyerapan.

  4. Verifikasi konsistensi HBase dan operasi Bahasa Definisi Data (Data Definition Language/DDL) dan Bahasa Manipulasi Data (Data Manipulation Language/DML) sederhana.

  5. Jika klaster tujuan memuaskan, hapus klaster sumber.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Apache HBase dan peningkatan klaster HDInsight, lihat artikel berikut ini: