Migrasi klaster Apache HBase ke versi baru

Artikel ini membahas cara memperbarui klaster Apache HBase Anda di Azure HDInsight ke versi yang lebih baru.

Artikel ini hanya berlaku jika Anda menggunakan akun Azure Storage yang sama untuk klaster sumber dan tujuan Anda. Untuk memutakhirkan dengan akun Penyimpanan baru atau berbeda untuk klaster tujuan Anda, lihat Memigrasikan Apache HBase ke versi baru dengan akun Penyimpanan 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

Untuk informasi selengkapnya tentang versi dan kompatibilitas HDInsight, lihat Versi Azure HDInsight.

Gambaran umum migrasi klaster Apache HBase

Untuk meningkatkan kluster Apache HBase Anda di Azure HDInsight, selesaikan langkah-langkah dasar berikut. Untuk instruksi mendetail, lihat langkah dan perintah terperinci, atau gunakan skrip dari bagian Memigrasikan HBase menggunakan skrip untuk migrasi otomatis.

Siapkan klaster sumber:

  1. Hentikan penyerapan data.
  2. Hapus data memstore.
  3. Hentikan HBase dari portal 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. Perbarui fs.defaultFS konfigurasi layanan HDFS untuk merujuk ke kontainer klaster sumber asli.
  4. Untuk klaster dengan accelerated writes, perbarui hbase.rootdir konfigurasi layanan HBase untuk merujuk ke kontainer klaster sumber asli.
  5. Bersihkan data Zookeeper.

Selesaikan migrasi:

  1. Bersihkan dan migrasikan WAL.
  2. Salin aplikasi dari kontainer default klaster tujuan ke kontainer sumber asli.
  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 klaster Apache HBase Anda.

Siapkan klaster sumber

  1. Hentikan penyerapan pada klaster HBase sumber.

  2. Hapus klaster HBase sumber yang sedang Anda tingkatkan.

    HBase menulis data yang masuk ke penyimpanan dalam memori, yang disebut memstore. Setelah memstore mencapai ukuran tertentu, HBase mengirimkannya ke disk untuk penyimpanan jangka panjang di akun penyimpanan klaster. Menghapus klaster sumber setelah peningkatan juga akan menghapus semua data di memstores. Untuk menyimpan data, hapus setiap memstore tabel secara manual ke disk sebelum peningkatan.

    Anda dapat menghapus data memstore dengan menjalankan flush_all_tables.sh skrip dari repositori Azure hbase-utils GitHub.

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

    hbase shell
    flush "<table-name>"
    
  3. Masuk ke Apache Ambari pada klaster 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 klaster HBase sumber dengan Accelerated Writes, cadangkan direktori WAL di bawah HDFS dengan menjalankan perintah berikut dari sesi SSH pada salah satu simpul Zookeeper atau simpul pekerja dari klaster sumber.

    hdfs dfs -mkdir /hbase-wal-backup
    hdfs dfs -cp hdfs://mycluster/hbasewal /hbase-wal-backup
    

Siapkan klaster tujuan

  1. Di portal Microsoft Azure, siapkan klaster HDInsight tujuan baru menggunakan akun penyimpanan yang sama dengan klaster sumber, tetapi dengan nama kontainer yang berbeda:

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

  3. Di bawah Layanan>HDFS>Mengonfigurasi>Tingkat Lanjut>Situs inti Tingkat Lanjut, ubah fs.defaultFS pengaturan HDFS untuk menunjuk ke nama kontainer klaster sumber asli. Misalnya, pengaturan dalam cuplikan layar berikut harus diubah menjadi wasbs://hbase-upgrade-old-2021-03-22.

    Di Ambari, pilih Layanan > HDFS > Configs > Advanced Advanced > core-site dan ubah nama kontainer.

  4. Jika klaster tujuan Anda memiliki fitur Accelerated Writes, ubah hbase.rootdir jalur untuk menunjuk ke nama kontainer klaster sumber asli. Misalnya, jalur berikut harus diubah menjadi hbase-upgrade-old-2021-03-22. Jika klaster Anda tidak memiliki Accelerated Writes, lewati langkah ini.

    Di Ambari, ubah nama kontainer untuk rootdir HBase.

  5. Bersihkan data Zookeeper pada klaster tujuan dengan menjalankan perintah berikut di simpul Zookeeper atau simpul pekerja:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

Bersihkan dan migrasikan WAL

Jalankan perintah berikut, tergantung pada versi HDI sumber Anda dan apakah klaster sumber dan tujuan memiliki Accelerated Writes (Penulisan yang Dipercepat).

  • Klaster tujuan selalu HDI versi 4.0, karena HDI 3.6 berada dalam Dukungan dasar dan tidak direkomendasikan untuk klaster baru.
  • Perintah salinan HDFS adalah hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

Catatan

  • Untuk <source-container-fullpath> jenis penyimpanan WASB adalah wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • Untuk <source-container-fullpath> jenis penyimpanan Azure Data Lake Storage Gen2 adalah abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net.

Klaster sumber adalah HDI 3.6 atau HDI 4.0 dengan Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes

Bersihkan data WAL FS untuk klaster tujuan, dan salin direktori WAL dari klaster sumber ke dalam HDFS klaster tujuan. Salin direktori dengan menjalankan perintah berikut di simpul Zookeeper atau simpul pekerja pada klaster tujuan:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wal-backup/hbasewal hdfs://mycluster/

Klaster sumber adalah HDI 3.6 tanpa Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes

Bersihkan data WAL FS untuk klaster tujuan, dan salin direktori WAL dari klaster sumber ke dalam HDFS klaster tujuan. Salin direktori dengan menjalankan perintah berikut di simpul Zookeeper atau simpul pekerja pada klaster tujuan:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container>/hbase/*WALs hdfs://mycluster/hbasewal

Klaster sumber adalah HDI 3.6 tanpa Accelerated Writes, dan klaster tujuan tidak memiliki Accelerated Writes

Bersihkan data WAL FS untuk klaster tujuan, dan salin direktori WAL klaster sumber ke dalam HDFS klaster tujuan. Untuk menyalin direktori, jalankan perintah berikut di simpul Zookeeper atau simpul pekerja pada klaster tujuan:

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase/WALs,/hbase/MasterProcWALs,/hbase/oldWALs" -cp <source-container-fullpath>/hbase/*WALs /hbase-wals

Klaster sumber adalah HDI 4.0 tanpa Accelerated Writes, dan klaster tujuan memiliki Accelerated Writes

Bersihkan data WAL FS untuk klaster tujuan, dan salin direktori WAL dari klaster sumber ke dalam HDFS klaster tujuan. Salin direktori dengan menjalankan perintah berikut di simpul Zookeeper atau simpul pekerja pada klaster tujuan:

sudo -u hbase hdfs dfs -rm -r hdfs://mycluster/hbasewal
sudo -u hbase hdfs dfs -cp <source-container-fullpath>/hbase-wals/* hdfs://mycluster/hbasewal

Klaster sumber adalah HDI 4.0 tanpa Accelerated Writes, dan klaster tujuan tidak memiliki Accelerated Writes

Bersihkan data WAL FS untuk klaster tujuan, dan salin direktori WAL klaster sumber ke dalam HDFS klaster tujuan. Untuk menyalin direktori, jalankan perintah berikut di simpul Zookeeper atau simpul pekerja pada klaster tujuan:

sudo -u hbase hdfs dfs -rm -r /hbase-wals/*
sudo -u hbase hdfs dfs -Dfs.azure.page.blob.dir="/hbase-wals" -cp <source-container-fullpath>/hbase-wals /

Menyelesaikan migrasi

  1. Dengan menggunakan sudo -u hdfs konteks pengguna, salin folder /hdp/apps/<new-version-name> dan kontennya dari <destination-container-fullpath> ke /hdp/apps folder ke bawah<source-container-fullpath>. Anda bisa menyalin folder dengan menjalankan perintah berikut pada klaster tujuan:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/<hdi-version> <source-container-fullpath>/hdp/apps
    

    Contohnya:

    sudo -u hdfs hdfs dfs -cp /hdp/apps/4.1.3.6 wasbs://hbase-upgrade-old-2021-03-22@hbaseupgrade.blob.core.windows.net/hdp/apps
    
  2. Pada klaster tujuan, simpan perubahan Anda, dan hidupkan ulang semua layanan yang diperlukan seperti yang ditunjukkan Ambari.

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

  4. Mulai penyerapan.

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

  6. Jika klaster tujuan memuaskan, hapus klaster sumber.

Memigrasikan HBase menggunakan skrip

  1. Jalankan migrate-hbase-source.sh skrip pada kluster sumber dan migrate-hbase-dest.sh pada kluster tujuan. Gunakan instruksi berikut untuk menjalankan skrip ini.

    Catatan

    Skrip ini tidak menyalin WAL lama HBase sebagai bagian dari migrasi; oleh karena itu, skrip tidak akan digunakan pada kluster yang mengaktifkan fitur HBase Backup atau Replikasi.

  2. Pada kluster sumber

    sudo bash migrate-hbase-source.sh
    
  3. Pada kluster tujuan

    sudo bash migrate-hbase-dest.sh  -f <src_default_Fs>
    

Argumen wajib untuk perintah di atas:

   -f, --src-fs
   The fs.defaultFS of the source cluster
   For example:
   -f wasb://anynamehbase0316encoder-2021-03-17t01-07-55-935z@anynamehbase0hdistorage.blob.core.windows.net

Langkah berikutnya

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