Aracılığıyla paylaş


Apache HBase Master (HMaster) Azure HDInsight'ta başlatılamıyor

Bu makalede, Azure HDInsight kümeleriyle etkileşim kurarken karşılaşılan sorunlara yönelik sorun giderme adımları ve olası çözümler açıklanmaktadır.

Senaryo: Master startup cannot progress, in holding-pattern until region comes online

Sorun

Aşağıdaki uyarı nedeniyle HMaster başlatılamıyor:

hbase:namespace,,<timestamp_region_create>.<encoded_region_name>.is NOT online; state={<encoded_region_name> state=OPEN, ts=<some_timestamp>, server=<server_name>}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined. 

Örneğin, parametre değerleri gerçek iletide farklılık gösterebilir:

hbase:namespace,,1546588612000.0000010bc582e331e3080d5913a97000. is NOT online; state={0000010bc582e331e3080d5913a97000 state=OPEN, ts=1633935993000, server=<wn fqdn>,16000,1622012792000}; ServerCrashProcedures=false. Master startup cannot progress, in holding-pattern until region onlined.

Neden

HMaster, OPEN bölgelerini çevrimiçine döndürmeden önce bölge sunucularında WAL dizinini denetler. Bu durumda, bu dizin yoksa başlatılmıyordu

Çözüm

  1. Komutunu kullanarak bu sahte dizini oluşturun: sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. Ambari kullanıcı arabiriminden HMaster hizmetini yeniden başlatın.

hbase-2.x kullanıyorsanız, ad alanı ve meta tablo atamak için hbck2'yi kullanma hakkında daha fazla bilgi edinin

Senaryo: Atomik yeniden adlandırma hatası

Sorun

Başlatma işlemi sırasında beklenmeyen dosyalar belirlendi.

Neden

Başlatma işlemi sırasında HMaster, verileri sıfırdan (.tmp) klasöre taşıma da dahil olmak üzere birçok başlatma adımı gerçekleştirir. HMaster, yanıt vermeyen bölge sunucuları olup olmadığını görmek için önceden yazma günlükleri (WAL) klasörüne de bakar.

HMaster, WAL klasörlerinde temel bir liste komutu yapar. HMaster herhangi bir zamanda bu klasörlerin herhangi birinde beklenmeyen bir dosya görürse, bir özel durum oluşturur ve başlatılmaz.

Çözüm

Çağrı yığınını denetleyin ve soruna hangi klasörün neden olabileceğini belirlemeye çalışın (örneğin, WAL klasörü veya .tmp klasörü olabilir). Ardından Azure Depolama Gezgini veya HDFS komutlarını kullanarak sorun dosyasını bulmayı deneyin. Bu dosya genellikle olarak adlandırılır *-renamePending.json. (Dosya *-renamePending.json , WASB sürücüsünde atomik yeniden adlandırma işlemini uygulamak için kullanılan bir günlük dosyasıdır. Bu uygulamadaki hatalar nedeniyle bu dosyalar işlem kilitlenmelerinden sonra bırakılabilir ve bu şekilde devam edebilir.) Bu dosyayı Bulut Gezgini'nde veya HDFS komutlarını kullanarak zorla silin.

Bazen, bu konumdaki gibi $$$.$$$ geçici bir dosya da olabilir. Bu dosyayı görmek için HDFS ls komutunu kullanmanız gerekir; dosyayı Azure Depolama Gezgini'da göremezsiniz. Bu dosyayı silmek için HDFS komutunu hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$kullanın.

Bu komutları çalıştırdıktan sonra HMaster hemen başlatılmalıdır.


Senaryo: Listelenen sunucu adresi yok

Sorun

Tablonun çevrimiçi olmadığını belirten hbase: meta bir ileti görebilirsiniz. hbase: meta table replicaId 0 is not found on any region. Çalıştırmahbck, HMaster günlüklerinde şu iletiyi görebilirsiniz: No server address listed in hbase: meta for region hbase: backup <region name>.

Neden

HBase yeniden başlatıldıktan sonra HMaster başlatılamadı.

Çözüm

  1. HBase kabuğuna aşağıdaki komutları girin (gerçek değerleri uygun şekilde değiştirin):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Girdiyi hbase: namespace silin. Bu girdi, tablo tarandığında bildirilen hatayla hbase: namespace aynı olabilir.

  3. HBase'i çalışır durumda duruma getirmek için Ambari kullanıcı arabiriminden etkin HMaster'ı yeniden başlatın.

  4. HBase kabuğunda, tüm çevrimdışı tabloları getirmek için aşağıdaki komutu çalıştırın:

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Senaryo: java.io.IOException: Timedout

Sorun

HMaster şuna benzer önemli özel durumla zaman aşımına uğradı: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

Neden

HMaster hizmetlerinizi yeniden başlattığınızda boşaltılmış olmayan çok sayıda tablonuz ve bölgeniz varsa bu sorunla karşılaşabilirsiniz. Zaman aşımı, HMaster ile ilgili bilinen bir hatadır. Genel küme başlangıç görevleri uzun sürebilir. Ad alanı tablosu henüz atanmamışsa HMaster kapatılır. Uzun başlangıç görevleri, büyük miktarda şişirilmemiş verilerin mevcut olduğu ve beş dakikalık bir zaman aşımının yeterli olmadığı durumlarda gerçekleşir.

Çözüm

  1. Apache Ambari kullanıcı arabiriminden HBase>Yapılandırmaları'na gidin. Özel hbase-site.xml dosyaya aşağıdaki ayarı ekleyin:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Gerekli hizmetleri (HMaster ve muhtemelen diğer HBase hizmetleri) yeniden başlatın.


Senaryo: Sık sık bölge sunucusu yeniden başlatmaları

Sorun

Düğümler düzenli aralıklarla yeniden başlatılır. Bölge sunucusu günlüklerinde şuna benzer girdiler görebilirsiniz:

2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms
2017-05-09 17:45:07,683 WARN  [JvmPauseMonitor] util.JvmPauseMonitor: Detected pause in JVM or host machine (eg GC): pause of approximately 31000ms

Neden: zookeeper oturumu zaman aşımı

Uzun regionserver JVM GC duraklatma. Duraklama, yanıt vermemeye ve zookeeper oturumu zaman aşımı 40'lar içinde HMaster'a kalp atışı gönderememeye neden olur regionserver . HMaster öldüğüne inanıyor regionserver , ve regionserver yeniden başlatılıyor.

Azaltmak için Zookeeper oturum zaman aşımını değiştirin, yalnızca hbase-site ayar zookeeper.session.timeout değil zookeeper zoo.cfg ayarının maxSessionTimeout da değiştirilmesi gerekir.

  1. Ambari kullanıcı arabirimine erişin, HBase -> Yapılandırmalar -> Ayarlar'a gidin, Zaman Aşımları bölümünde Zookeeper Oturum Zaman Aşımı değerini değiştirin.

  2. Ambari kullanıcı arabirimine erişin, Zookeeper -> Yapılandırmalar -> Özel'e zoo.cfggidin, aşağıdaki ayarı ekleyin/değiştirin. Değerin HBase zookeeper.session.timeoutile aynı olduğundan emin olun.

    Key: maxSessionTimeout Value: 120000  
    
  3. Gerekli hizmetleri yeniden başlatın.

Neden: aşırı yüklenmiş RegionServer

Üst sınırı hesaplamak için RS başına bölge sayısı - üst sınır'ı izleyin. Örneğin: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Azaltmak için HBase kümenizin ölçeğini büyütün.


Senaryo: Günlük bölme hatası

Sorun

HMasters bir HBase kümesinde bulunamadı.

Neden

İkincil depolama hesabı için yanlış yapılandırılmış HDFS ve HBase ayarları.

Çözüm

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase ve Ambari'de hizmetleri yeniden başlatın.


Sonraki adımlar

Sorununuzu görmediyseniz veya sorununuzu çözemiyorsanız daha fazla destek için aşağıdaki kanallardan birini ziyaret edin:

  • Azure Topluluk Desteği aracılığıyla Azure uzmanlarından yanıt alın.

  • Müşteri deneyimini geliştirmek için resmi Microsoft Azure hesabı olan @AzureSupport ile bağlantı kurun. Azure topluluğunun doğru kaynaklara bağlanması: yanıtlar, destek ve uzmanlar.

  • Daha fazla yardıma ihtiyacınız varsa Azure portalından bir destek isteği gönderebilirsiniz. Menü çubuğundan Destek'i seçin veya Yardım + destek hub'ını açın. Daha ayrıntılı bilgi için bkz. Azure desteği isteği oluşturma. Abonelik Yönetimi’ne ve faturalandırma desteğine erişim Microsoft Azure aboneliğinize dahildir, Teknik Destek ise herhangi bir Azure Destek Planı üzerinden sağlanır.