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
Skapa den här dummykatalogen med kommandot :
sudo -u hbase hdfs dfs -mkdir /hbase-wals/WALs/<wn fqdn>,16000,1622012792000
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.json
vanligtvis . (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
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>'
Ta bort posten
hbase: namespace
. Den här posten kan vara samma fel som rapporteras närhbase: namespace
tabellen genomsöks.Starta om den aktiva HMaster från Ambari-användargränssnittet för att få upp HBase i körningstillstånd.
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
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
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.
Å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.
Å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 HBasezookeeper.session.timeout
.Key: maxSessionTimeout Value: 120000
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.