Dela via


Apache HBase Master (HMaster) startar inte i Azure HDInsight

Den här artikeln beskriver felsökningssteg och möjliga lösningar på problem när du interagerar med Azure HDInsight-kluster.

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

Problem

HMaster startar inte på grund av följande varning:

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. 

Parametervärdena kan till exempel variera i det faktiska meddelandet:

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.

Orsak

HMaster kontrollerar WAL-katalogen på regionservrarna innan du tar tillbaka OPEN-regionerna online. I det här fallet, om katalogen inte fanns, kom den inte igång

Åtgärd

  1. Skapa den här dummykatalogen med kommandot : sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000

  2. Starta om HMaster-tjänsten från Ambari-användargränssnittet.

Om du använder hbase-2.x kan du läsa mer om hur du använder hbck2 för att tilldela namnområde och metatabell

Scenario: Fel vid atomisk namnbyte

Problem

Oväntade filer som identifierades under startprocessen.

Orsak

Under startprocessen utför HMaster många initieringssteg, inklusive att flytta data från en mapp (.tmp) till datamappen. HMaster tittar också på wal-mappen (write-ahead logs) för att se om det finns några servrar som inte svarar.

HMaster utför ett grundläggande listkommando i WAL-mapparna. Om HMaster när som helst ser en oväntad fil i någon av dessa mappar genererar den ett undantag och startar inte.

Åtgärd

Kontrollera anropsstacken och försök att avgöra vilken mapp som kan orsaka problemet (det kan till exempel vara WAL-mappen eller .tmp mappen). Försök sedan att hitta problemfilen i Azure Storage Explorer eller med hjälp av HDFS-kommandon. Den här filen kallas *-renamePending.jsonvanligtvis . (Filen *-renamePending.json är en journalfil som används för att implementera åtgärden för atomisk namnbyte i WASB-drivrutinen. På grund av buggar i den här implementeringen kan dessa filer lämnas över efter processkrascher och så vidare.) Tvinga bort den här filen antingen i Cloud Explorer eller med hjälp av HDFS-kommandon.

Ibland kan det också finnas en temporär fil med namnet något liknande $$$.$$$ på den här platsen. Du måste använda HDFS-kommandot ls för att se den här filen. Du kan inte se filen i Azure Storage Explorer. Om du vill ta bort den här filen använder du HDFS-kommandot hdfs dfs -rm /\<path>\/\$\$\$.\$\$\$.

När du har kört dessa kommandon bör HMaster starta omedelbart.


Scenario: Ingen serveradress visas

Problem

Du kan se ett meddelande som anger att hbase: meta tabellen inte är online. Körning hbck kan rapportera att hbase: meta table replicaId 0 is not found on any region. I HMaster-loggarna kan du se meddelandet: No server address listed in hbase: meta for region hbase: backup <region name>.

Orsak

Det gick inte att initiera HMaster efter omstarten av HBase.

Åtgärd

  1. I HBase-gränssnittet anger du följande kommandon (ändra faktiska värden enligt tillämpligt):

    scan 'hbase:meta'
    delete 'hbase:meta','hbase:backup <region name>','<column name>'
    
  2. Ta bort posten hbase: namespace . Den här posten kan vara samma fel som rapporteras när hbase: namespace tabellen genomsöks.

  3. Starta om den aktiva HMaster från Ambari-användargränssnittet för att få upp HBase i körningstillstånd.

  4. Kör följande kommando för att ta upp alla offlinetabeller i HBase-gränssnittet:

    hbase hbck -ignorePreCheckPermission -fixAssignments
    

Scenario: java.io.IOException: Timedout

Problem

HMaster överskrider tidsgränsen med ett allvarligt undantag som liknar: java.io.IOException: Timedout 300000ms waiting for namespace table to be assigned.

Orsak

Det här problemet kan uppstå om du har många tabeller och regioner som inte har tömts när du startar om HMaster-tjänsterna. Tidsgränsen är en känd defekt hos HMaster. Det kan ta lång tid att starta ett allmänt kluster. HMaster stängs av om namnområdestabellen ännu inte har tilldelats. De långa startuppgifterna sker där stora mängder oupplösade data finns och en tidsgräns på fem minuter inte räcker.

Åtgärd

  1. Från Apache Ambari-användargränssnittet går du till HBase-konfigurationer>. Lägg till följande inställning i den anpassade hbase-site.xml filen:

    Key: hbase.master.namespace.init.timeout Value: 2400000  
    
  2. Starta om de nödvändiga tjänsterna (HMaster och eventuellt andra HBase-tjänster).


Scenario: Servern för frekventa regioner startas om

Problem

Noder startas regelbundet om. Från regionserverloggarna kan du se poster som liknar:

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

Orsak: tidsgräns för zookeepersession

Lång regionserver JVM GC-paus. Pausen gör regionserver att den inte svarar och inte kan skicka hjärtslag till HMaster inom tidsgränsen för zookeepersessionen på 40-talet. HMaster tror är regionserver död, avbryter regionserver och startar om.

För att minimera kan du ändra tidsgränsen för Zookeeper-sessionen, inte bara hbase-site inställningen zookeeper.session.timeout utan även Zookeeper-inställningen zoo.cfg maxSessionTimeout måste ändras.

  1. Åtkomst till Ambari-användargränssnittet, gå till HBase –> Konfigurationer –> Inställningar, i avsnittet Timeouts ändrar du värdet för Tidsgräns för Zookeeper-sessioner.

  2. Åtkomst till Ambari-användargränssnittet, gå till Zookeeper –> Konfigurationer –> Anpassad zoo.cfg, lägg till/ändra följande inställning. Kontrollera att värdet är detsamma som HBase zookeeper.session.timeout.

    Key: maxSessionTimeout Value: 120000  
    
  3. Starta om nödvändiga tjänster.

Orsak: överbelastad RegionServer

Följ Antal regioner per RS – övre gräns för att beräkna den övre gränsen. Till exempel: 8000 (Region server Heap -- Xmx in MB) * 0.4 (hbase.regionserver.global.memstore.size) /64 (hbase.regionserver.hlog.blocksize/2) = 50

Skala upp HBase-klustret för att minimera problemet.


Scenario: Fel vid loggdelning

Problem

HMasters kunde inte komma upp i ett HBase-kluster.

Orsak

Felkonfigurerade HDFS- och HBase-inställningar för ett sekundärt lagringskonto.

Åtgärd

set hbase.rootdir: wasb://@.blob.core.windows.net/hbase och starta om tjänster på Ambari.


Nästa steg

Om du inte ser problemet eller inte kan lösa problemet går du till någon av följande kanaler för mer support:

  • Få svar från Azure-experter via Azure Community Support.

  • Anslut med @AzureSupport – det officiella Microsoft Azure-kontot för att förbättra kundupplevelsen. Ansluta Azure-communityn till rätt resurser: svar, support och experter.

  • Om du behöver mer hjälp kan du skicka en supportbegäran från Azure Portal. Välj Support i menyraden eller öppna hubben Hjälp + support . Mer detaljerad information finns i Skapa en Azure Support begäran. Tillgång till support för prenumerationshantering och fakturering ingår i din Microsoft Azure-prenumeration och teknisk support ges via ett supportavtal för Azure.