Aracılığıyla paylaş


Apache HBase kümesini yeni bir 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ı kullanıyorsanız geçerlidir. Hedef kümeniz için yeni veya farklı bir Depolama hesabıyla yükseltmek için bkz. Apache HBase'i yeni bir Depolama hesabıyla yeni bir sürüme geçirme.

Yükseltme esnasında duraklama sadece birkaç dakika sürmelidir. 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çirme

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 Alt sürüm Yama
İstemci-Sunucu kablo uyumluluğu N Y Y
Sunucu-Sunucu uyumluluğu N Y Y
Dosya biçimi uyumluluğu N Y Y
İstemci API uyumluluğu N Y Y
İstemci ikili uyumluluğu N N Y
Sunucu tarafı sınırlı API uyumluluğu
İstikrarlı N Y Y
Evrimleşen N N Y
Kararsız N N N
Bağımlılık uyumluluğu N Y Y
İşletimsel uyumluluk N N Y

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ırlayın:

  1. Veri alımını durdurun.
  2. Memstore verilerini boşalt.
  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. Orijinal kaynak küme kapsayıcısına başvuracak şekilde HDFS hizmet yapılandırmalarını güncelleyin fs.defaultFS.
  4. Hızlandırılmış yazma işlemleri olan kümeler için, HBase servis ayarlarında orijinal kaynak küme kapsayıcısına başvuracak şekilde hbase.rootdir öğesini güncelleyin.
  5. Zookeeper verilerini temizleyin.

Geçişi tamamlayın:

  1. WAL'yi temizleyin ve taşıyın.
  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 veri alımını 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 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ı diske el ile boşaltın.

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

    HdInsight kümesinden aşağıdaki HBase kabuğu komutunu çalıştırarak da memstore verilerini temizleyebilirsiniz:

    hbase shell
    flush "<table-name>"
    
  3. Kaynak kümede Apache Ambari'de https://<OLDCLUSTERNAME>.azurehdinsight.net 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ış Yazma işlemlerine sahip 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ında, 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>Yapılandırmaları>Gelişmiş>Gelişmiş core-site altında, HDFS ayarını özgün kaynak küme kapsayıcı adına işaret edecek şekilde değiştirin.fs.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 > Yapılandırmaları > Gelişmiş > Gelişmiş çekirdek site'yi seçin ve kapsayıcı adını değiştirin.

  4. Hedef kümenizde Hızlandırılmış Yazma özelliği varsa, hbase.rootdir yolunu özgün kaynak küme kapsayıcı adına işaret edecek şekilde değiştirin. Örneğin, aşağıdaki yol hbase-upgrade-old-2021-03-22 olarak değiştirilmelidir. Kümenizde Hızlandırılmış Yazma işlemleri 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'ı temizlemek ve taşımak

Kaynak HDI sürümünüz 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.

Uyarı

  • <source-container-fullpath>, WASB depolama türü için değerdir wasbs://<source-container-name>@<storageaccountname>.blob.core.windows.net.
  • Azure Data Lake Storage Gen2 depolama türü için <source-container-fullpath>, abfs://<source-container-name>@<storageaccountname>.dfs.core.windows.net'dir.

Kaynak küme HDI 3.6 veya Hızlandırılmış Yazma özelliğine sahip 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 kaynak kümedeki WAL dizinini 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 vardır

Hedef küme için WAL FS verilerini temizleyin ve kaynak kümedeki WAL dizinini 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ümede Hızlandırılmış Yazmalar vardır

Hedef küme için WAL FS verilerini temizleyin ve kaynak kümedeki WAL dizinini 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
    

    Örneğin:

    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.

    Uyarı

    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. Veri alımını 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 tatmin ediciyse kaynak kümeyi silin.

Betikleri kullanarak HBase'i geçirme

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

    Uyarı

    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. Amaçlanan 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: