Apache HBase kümesini yeni sürüme geçirme

Bu makalede, Azure HDInsight'ta Apache HBase kümenizi daha yeni bir sürüme güncelleştirme adımları anlatılmaktadır.

Bu makale yalnızca kaynak ve hedef kümeleriniz için aynı Azure Depolama hesabını kullandığınızda geçerlidir. Hedef kümeniz için yeni veya farklı bir Depolama hesabıyla yükseltmek için bkz. Apache HBase'i yeni depolama hesabıyla yeni bir sürüme geçirme.

Yükseltme sırasında kapalı kalma süresi yalnızca birkaç dakika olmalıdır. Bu kapalı kalma süresi, tüm bellek içi verileri temizleme adımları ve yeni kümedeki hizmetleri yapılandırma ve yeniden başlatma süresinden kaynaklanır. Sonuçlarınız düğüm sayısına, veri miktarına ve diğer değişkenlere bağlı olarak değişir.

Apache HBase uyumluluğunu gözden geçirin

Apache HBase'i yükseltmeden önce kaynak ve hedef kümelerdeki HBase sürümlerinin uyumlu olduğundan emin olun. Uygulamanızın yeni sürümle uyumlu olduğundan emin olmak için HBase Başvuru Kılavuzu'ndaki HBase sürüm uyumluluk matrisini ve sürüm notlarını gözden geçirin.

Aşağıda örnek bir uyumluluk matrisi verilmiştir. Y uyumluluğu, N ise olası bir uyumsuzluğu gösterir:

Uyumluluk türü Ana sürüm İkincil sürüm Patch
Kablo uyumluluğunu Client-Server N E E
Server-Server uyumluluğu N E E
Dosya biçimi uyumluluğu N E E
İstemci API uyumluluğu N E E
İstemci ikili uyumluluğu N N E
Sunucu tarafı sınırlı API uyumluluğu
Dengeli N E E
Gelişen N N E
Kararsız N N N
Bağımlılık uyumluluğu N E E
İşletimsel uyumluluk N N E

HDInsight sürümleri ve uyumluluk hakkında daha fazla bilgi için bkz. Azure HDInsight sürümleri.

Apache HBase kümesi geçişe genel bakış

Azure HDInsight'ta Apache HBase kümenizi yükseltmek için aşağıdaki temel adımları tamamlayın. Ayrıntılı yönergeler için ayrıntılı adımlara ve komutlara bakın veya otomatik geçiş için betikleri kullanarak HBase'i geçirme bölümündeki betikleri kullanın.

Kaynak kümeyi hazırlama:

  1. Veri alımını durdurun.
  2. Memstore verilerini temizleme.
  3. HBase'i Ambari'den durdurun.
  4. Hızlandırılmış yazma işlemlerine sahip kümeler için Önceden Yazma Günlüğü (WAL) dizinini yedekleyin.

Hedef kümeyi hazırlama:

  1. Hedef kümeyi oluşturun.
  2. HBase'i Ambari'den durdurun.
  3. ÖZGÜN kaynak küme kapsayıcısına başvurmak için HDFS hizmet yapılandırmalarında güncelleştirme fs.defaultFS .
  4. Hızlandırılmış yazma işlemleri olan kümeler için, HBase hizmet yapılandırmalarında özgün kaynak küme kapsayıcısına başvurmak üzere güncelleştirin hbase.rootdir .
  5. Zookeeper verilerini temizleyin.

Geçişi tamamlayın:

  1. WAL'yi temizleyin ve geçirin.
  2. Uygulamaları hedef kümenin varsayılan kapsayıcısından özgün kaynak kapsayıcıya kopyalayın.
  3. Ambari hedef kümesinden tüm hizmetleri başlatın.
  4. HBase'i doğrulayın.
  5. Kaynak kümeyi silin.

Ayrıntılı geçiş adımları ve komutları

Apache HBase kümenizi geçirmek için bu ayrıntılı adımları ve komutları kullanın.

Kaynak kümeyi hazırlama

  1. Kaynak HBase kümesine alımı durdurun.

  2. Yükseltmekte olduğunuz kaynak HBase kümesini boşaltın.

    HBase, gelen verileri memstore adlı bir bellek içi depoya yazar. Memstore belirli bir boyuta ulaştıktan sonra HBase, kümenin depolama hesabında uzun süreli depolama için depoyu diske boşaltır. Yükseltmeden sonra kaynak küme silindiğinde, memstore'lardaki tüm veriler de silinir. Verileri korumak için, yükseltmeden önce her tablonun memstore dosyasını el ile diske boşaltın.

    Azure hbase-utils GitHub deposundanflush_all_tables.sh betiğini çalıştırarak memstore verilerini temizleyebilirsiniz.

    Ayrıca HDInsight kümesinden aşağıdaki HBase kabuk komutunu çalıştırarak memstore verilerini temizleyebilirsiniz:

    hbase shell
    flush "<table-name>"
    
  3. ile https://<OLDCLUSTERNAME>.azurehdinsight.netkaynak kümede Apache Ambari'de oturum açın ve HBase hizmetlerini durdurun.

  4. Onay isteminde, HBase için bakım modunu açmak için kutuyu seçin.

    Ambari'ye bağlanma ve kullanma hakkında daha fazla bilgi için bkz. Ambari Web Kullanıcı Arabirimini kullanarak HDInsight kümelerini yönetme.

  5. Kaynak HBase kümenizde Hızlandırılmış Yazmalar özelliği yoksa bu adımı atlayın. Hızlandırılmış Yazmaları olan kaynak HBase kümeleri için, kaynak kümenin Zookeeper düğümlerinden veya çalışan düğümlerinden herhangi birinde bir SSH oturumundan aşağıdaki komutları çalıştırarak HDFS altında WAL dizinini yedekleyin.

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

Hedef kümeyi hazırlama

  1. Azure portal, kaynak kümeyle aynı depolama hesabını kullanarak ancak farklı bir kapsayıcı adıyla yeni bir hedef HDInsight kümesi ayarlayın:

  2. konumundaki yeni kümede Apache Ambari'dehttps://<NEWCLUSTERNAME>.azurehdinsight.netoturum açın ve HBase hizmetlerini durdurun.

  3. Hizmetler>HDFS> GelişmişGelişmiş çekirdek sitesiniyapılandır>> altında, HDFS ayarını özgün kaynak küme kapsayıcı adına işaret eden şekilde değiştirinfs.defaultFS. Örneğin, aşağıdaki ekran görüntüsündeki ayar olarak wasbs://hbase-upgrade-old-2021-03-22değiştirilmelidir.

    Ambari'de Hizmetler > HDFS > Gelişmiş Gelişmiş > çekirdek sitesini yapılandır'ı > seçin ve kapsayıcı adını değiştirin.

  4. Hedef kümenizde Hızlandırılmış Yazmalar özelliği varsa, yolu özgün kaynak küme kapsayıcı adına işaret eden şekilde değiştirin hbase.rootdir . Örneğin, aşağıdaki yol olarak hbase-upgrade-old-2021-03-22değiştirilmelidir. Kümenizde Hızlandırılmış Yazmalar yoksa bu adımı atlayın.

    Ambari'de HBase rootdir için kapsayıcı adını değiştirin.

  5. Herhangi bir Zookeeper düğümünde veya çalışan düğümünde aşağıdaki komutları çalıştırarak hedef kümedeki Zookeeper verilerini temizleyin:

    hbase zkcli
    rmr /hbase-unsecure
    quit
    

WAL'ı temizleme ve geçirme

Kaynak HDI sürümünüze ve kaynak ve hedef kümelerde Hızlandırılmış Yazma olup olmadığına bağlı olarak aşağıdaki komutları çalıştırın.

  • HDI 3.6 Temel destekte olduğundan ve yeni kümeler için önerilmiyorsa hedef küme her zaman HDI sürüm 4.0'dır.
  • HDFS kopyalama komutu şeklindedir hdfs dfs <copy properties starting with -D> -cp <source> <destination> # Serial execution.

Not

  • <source-container-fullpath> WASB depolama türü için değeridirwasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • <source-container-fullpath> depolama türü için Azure Data Lake Storage 2. Nesil değeridirabfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net.

Kaynak küme HDI 3.6 veya Hızlandırılmış Yazma ile HDI 4.0'dır ve hedef kümede Hızlandırılmış Yazmalar bulunur

Hedef küme için WAL FS verilerini temizleyin ve wal dizinini kaynak kümeden hedef kümenin HDFS'sine kopyalayın. Hedef kümedeki herhangi bir Zookeeper düğümünde veya çalışan düğümünde aşağıdaki komutları çalıştırarak dizini kopyalayın:

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/

Kaynak küme Hızlandırılmış Yazmalar olmadan HDI 3.6'dır ve hedef kümede Hızlandırılmış Yazmalar bulunur

Hedef küme için WAL FS verilerini temizleyin ve wal dizinini kaynak kümeden hedef kümenin HDFS'sine kopyalayın. Hedef kümedeki herhangi bir Zookeeper düğümünde veya çalışan düğümünde aşağıdaki komutları çalıştırarak dizini kopyalayın:

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

Kaynak küme Hızlandırılmış Yazmalar olmadan HDI 3.6'dır ve hedef kümede Hızlandırılmış Yazmalar yoktur

Hedef küme için WAL FS verilerini temizleyin ve kaynak küme WAL dizinini hedef kümenin HDFS'sine kopyalayın. Dizini kopyalamak için, hedef kümedeki herhangi bir Zookeeper düğümünde veya çalışan düğümünde aşağıdaki komutları çalıştırın:

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

Kaynak küme Hızlandırılmış Yazmalar olmadan HDI 4.0'dır ve hedef küme hızlandırılmış Yazmalar'a sahiptir

Hedef küme için WAL FS verilerini temizleyin ve wal dizinini kaynak kümeden hedef kümenin HDFS'sine kopyalayın. Hedef kümedeki herhangi bir Zookeeper düğümünde veya çalışan düğümünde aşağıdaki komutları çalıştırarak dizini kopyalayın:

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

Kaynak küme Hızlandırılmış Yazmalar olmadan HDI 4.0'dır ve hedef kümede Hızlandırılmış Yazmalar yoktur

Hedef küme için WAL FS verilerini temizleyin ve kaynak küme WAL dizinini hedef kümenin HDFS'sine kopyalayın. Dizini kopyalamak için, hedef kümedeki herhangi bir Zookeeper düğümünde veya çalışan düğümünde aşağıdaki komutları çalıştırın:

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 /

Geçişi tamamlama

  1. Kullanıcı bağlamını sudo -u hdfs kullanarak klasörünü /hdp/apps/<new-version-name> ve içindekileri <destination-container-fullpath>/hdp/apps altındaki <source-container-fullpath>klasöre kopyalayın. Hedef kümede aşağıdaki komutları çalıştırarak klasörü kopyalayabilirsiniz:

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

    Örnek:

    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. Hedef kümede değişikliklerinizi kaydedin ve Ambari'nin belirttiği gibi tüm gerekli hizmetleri yeniden başlatın.

  3. Uygulamanızı hedef kümeye işaret edin.

    Not

    Yükseltme yaptığınızda uygulamanızın statik DNS adı değişir. Bu DNS adını sabit kodlamak yerine, etki alanı adınızın DNS ayarlarında kümenin adına işaret eden bir CNAME yapılandırabilirsiniz. Bir diğer seçenek de uygulamanız için yeniden dağıtmadan güncelleştirebileceğiniz bir yapılandırma dosyası kullanmaktır.

  4. Alımı başlatın.

  5. HBase tutarlılığını ve basit Veri Tanımı Dili (DDL) ve Veri İşleme Dili (DML) işlemlerini doğrulayın.

  6. Hedef küme yeterliyse kaynak kümeyi silin.

Betikleri kullanarak HBase'i geçirme

  1. Betik migrate-hbase-source.sh kaynak kümede ve migrate-hbase-dest.sh hedef kümede yürütür. Bu betikleri yürütmek için aşağıdaki yönergeleri kullanın.

    Not

    Bu betikler, geçişin bir parçası olarak HBase eski WAL'lerini kopyalamaz; bu nedenle, betikler HBase Yedekleme veya Çoğaltma özelliği etkinleştirilmiş kümelerde kullanılmaz.

  2. Kaynak kümede

    sudo bash migrate-hbase-source.sh
    
  3. Hedef kümede

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

Yukarıdaki komut için zorunlu bağımsız değişken:

   -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

Sonraki adımlar

Apache HBase ve HDInsight kümelerini yükseltme hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın: