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

HMaster aşağıdaki uyarı nedeniyle 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.

Nedeni

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. HMaster hizmetini Ambari kullanıcı arabiriminden yeniden başlatın.

hbase-2.x kullanıyorsanız, hbck2 kullanarak ad alanı ve meta tablosu atama hakkında daha fazla bilgi edinin

Senaryo: Atomik yeniden adlandırma hatası

Sorun

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

Nedeni

Başlatma işlemi sırasında HMaster, verileri sıfırdan (.tmp) klasörden veri klasörüne 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 konumda gibi $$$.$$$ bir adla adlandırılan 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şlamalı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. komutunu çalıştırdığınızda hbck HMaster günlüklerinde şu iletiyi görebilirsiniz: No server address listed in hbase: meta for region hbase: backup <region name>.

Nedeni

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 giriş, tablo tarandığında bildirilen hatayla hbase: namespace aynı olabilir.

  3. HBase'i çalışır durumda 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.

Nedeni

HMaster hizmetlerinizi yeniden başlattığınızda boşaltılmış olmayan birçok 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 kapanır. Uzun başlatma görevleri, büyük miktarda hazırlanmamış veri olduğunda ve beş dakikalık bir zaman aşımı yeterli olmadığında 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üklerinden ş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. Duraklatma, yanıt vermemeye ve regionserver zookeeper oturum zaman aşımı 40'lar içinde HMaster'a kalp atışları gönderemeyebilir. HMaster öldüğüne inanıyor regionserver , iptal ediyor regionserver ve 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'ezoo.cfg gidin, 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. Örnek: 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ı.

Nedeni

İ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: