Autor: vivo Internet Big Data Team – Huang Guihu, Chen Shengzun
HBase ist eine verteilte, nicht relationale Open-Source-Datenbank mit hoher Zuverlässigkeit, hoher Skalierbarkeit und hoher Leistung. Sie wird häufig in den Bereichen Big-Data-Verarbeitung, Echtzeit-Computing, Datenspeicherung und -abruf und anderen Bereichen eingesetzt. In einem verteilten Cluster kommt es häufig zu Hardwarefehlern, die zu Dienstunterbrechungen auf Knoten- oder Clusterebene, Schäden an Metatabellen, RIT, Regionslücken, Überlappungen und anderen Problemen führen können Besonders wichtig ist in diesem Artikel die Beschreibung häufiger Fehler und entsprechender Lösungen rund um HBase-Metatabellen.
1. Hintergrund
Ich glaube, dass Freunde, die HBase-Entwicklungs-, Betriebs- und Wartungsarbeiten durchgeführt haben, in gewissem Maße dieses Gefühl haben. Als führender Anbieter verteilter nicht relationaler Datenbanken ist HBase nicht nur stabil, leistungsstark und sehr einfach zu installieren und zu erweitern , aber es mangelt auch an ausgereiften Überwachungssystemen, die bei der Fehlerbehebung äußerst unfreundlich sind. Wenn Ihnen ein umfassendes Verständnis von HBase fehlt, werden Sie oft nicht in der Lage sein, mit täglichen Ausfällen umzugehen. Als Herausgeber haben wir mehr als 20 HBase-Cluster unterschiedlicher Größe mit den Versionen 1.x~2.x betrieben und gewartet Wir haben uns mit Online-Problemen wie Regionslücken und verlorenen Berechtigungen befasst und bei verschiedenen Problemen nach den richtigen Antworten aus dem HBase-Quellcode gesucht gemeinsame Lösung für die Metatabelle, die die Redaktion aus vielen Fehlern zusammengefasst hat.
2. HBase-Meta-Meta-Informationstabelle
Die HBase-Metatabelle, auch Katalogtabelle genannt, ist eine spezielle HBase-Tabelle, die alle Regionen im HBase-Cluster und ihre entsprechenden RegionServer-Informationen speichert. Die Datengenauigkeit der Metainformationstabelle ist für den normalen Betrieb des HBase-Clusters von entscheidender Bedeutung. Daher muss sichergestellt werden, dass korrekte Daten in der Metainformationstabelle eine notwendige Voraussetzung für den stabilen Betrieb des Clusters sind. Wenn die Daten in der Metatabelle inkonsistent sind, führt dies zu RIT (Region In Transition) oder sogar, dass der Cluster nicht normal gestartet werden kann. Dies zeigt die Bedeutung der Metatabelle im HBase-Cluster die Metatabellenstruktur, das Datenformat und den Prozess zum Parsen starten (dieser Artikel konzentriert sich hauptsächlich auf die HBase-Version 2.4.8 und wird auch die HBase-Version 1.x durchsetzen).
2.1 Metatabellenstruktur
Die Metatabelle umfasst hauptsächlich drei Spaltenfamilien: info, table und rep_barrier, die jeweils Regionsinformationen und Tabellenstatus aufzeichnen:
2.2 Ladevorgang der Metatabelle
Durch die obige Metatabellenstruktur haben wir ein umfassendes Verständnis der Tabelle. Freunde, die HBase-Betrieb und -Wartung durchgeführt haben, glauben, dass sie alle diese Erfahrung machen. Einige Cluster starten schneller, andere langsamer und manchmal startet der Cluster sogar neu Fehlerhafter Vorgang. Es ist beim Laden der Metatabelle hängengeblieben und kann nachfolgende Prozesse nicht weiter ausführen. Wenn wir ein umfassendes Verständnis des Metatabellenladevorgangs haben, haben wir eine mehr oder weniger psychologische Erwartung für die Startzeit jedes Clusters. Das Folgende ist der Prozess im Zusammenhang mit dem Laden der Metatabelle:
Anhand des obigen Flussdiagramms zum Laden der Metatabelle können wir leicht herausfinden, warum einige Cluster langsam starten und einige Cluster nicht starten. Nachfolgend analysieren wir zwei Arten von Szenarien:
- Der Cluster startet langsam:
Normalerweise starten neue Cluster oder Cluster mit weniger Tabellen schneller, während Cluster mit mehr Tabellen dazu neigen, viel langsamer zu starten. Manchmal dauert der Start des Clusters lange, was die Leute misstrauisch macht Stimmt etwas mit dem Cluster nicht? Warum kann er so lange nicht in den Normalzustand wechseln? Es gibt zwei Stellen, die im gesamten Ladevorgang viel Zeit in Anspruch nehmen.
Laden Sie alle Tabellendeskriptoren vorab : Sie müssen das gesamte HBase-Datenverzeichnis scannen, die Datendateien im Verzeichnis .tabledesc analysieren und im HMaster-Speicher speichern. Wenn eine große Anzahl von Tabellen vorhanden ist (mehr als 10.000 Tabellen), ist dieser Vorgang häufig erforderlich Wenn wir auf der HMaster-Seite die Worte „Vorladen der Tabellendeskriptoren“ sehen, bedeutet dies, dass sich der Cluster in der Vorladephase befindet. Wir müssen nur geduldig warten, da die Metatabellenladephase noch nicht abgeschlossen ist erreicht.
Online-Geschäftstabellenregion : Die Datengröße der Metatabelle liegt normalerweise zwischen mehreren zehn MB und Hunderten von MB. Während der Cluster-Startphase muss die Offline-Region überprüft und online gestellt werden Wenn Sie die Öffnungsgeschwindigkeit beschleunigen möchten, können Sie den Wert „master.executor.openregion.threads“ (Standard 5) entsprechend anpassen.
- Cluster-Start fehlgeschlagen:
Online-Fehler der Metatabelle : Wenn der HRegionServer der Standardressourcengruppe aufhängt und sich der Startcode der Maschine nach dem Neustart ändert, kann der Metadaten-Shard den offenen Knoten nicht finden, was dazu führt, dass der Cluster nicht gestartet werden kann.
3. So reparieren Sie die Metatabelle
Da der HBase-Clusterstatus hauptsächlich über die Metatabelle verwaltet wird, führt eine Beschädigung oder falsche Metatabelle dazu, dass der HBase-Cluster nicht mehr verfügbar ist und das Risiko eines Datenverlusts besteht. Wir wissen, dass die Konsistenz der Metatabellendaten sehr wichtig ist. Unter welchen Umständen kommt es also zu Dateninkonsistenzen? (Informationen zu HBase 2.4.8-Reparaturbefehlen finden Sie im Tool hbase-operator-tools).
-
RegionServer ist ausgefallen oder anormal : Wenn RegionServer ausgefallen oder anormal ist, sind die in der Metatabelle gespeicherten Regions- und RegionServer-Informationen möglicherweise falsch oder gehen verloren.
-
Datenbeschädigung oder Fehler : Wenn die Daten in der Metatabelle beschädigt oder falsch sind, kann dies dazu führen, dass der HBase-Cluster nicht verfügbar ist und Daten verloren gehen.
-
Unzulässige Vorgänge : Wenn illegale Vorgänge an der Metatabelle ausgeführt werden, z. B. das Löschen oder Ändern von Daten in der Metatabelle, kann dies zu Fehlern oder zum Verlust der Metatabelle führen.
Metatabellenausfall ist nur ein allgemeiner Begriff. Wir können ihn je nach Typ grob in Langzeit-RIT, Regionslücke, Regionsüberlappung, Tabellenbeschreibungsdateiverlust, Metatabellen-HDFS-Pfad leer, usw. unterteilen Ich werde sie jeweils besprechen. Diese Arten von Fehlern werden analysiert und behoben:
3.1 RIT
RIT (Region In Transition) bezieht sich auf den laufenden Zustandsübergang im HBase-Cluster. Die folgenden Vorgänge führen dazu, dass sich der Zustand der Region im HBase-Cluster ändert. Beispielsweise ist der RegionServer ausgefallen, die Region wird geteilt, zusammengeführt Andere Operationen Der Regionsstatus umfasst hauptsächlich die folgenden zwölf Zustände und Transformationsdiagramme:
Um den Status der Region klarer zu machen, können wir ihn je nach Vorgangstyp in „Zuweisen“, „Zuweisung aufheben“, „Aufteilen“ und „Zusammenführen“ unterteilen. Wenn der RegionServer ausgefallen oder abnormal ist, Daten beschädigt sind oder während des Vorgangs Fehler auftreten, wird RIT dies tun Obwohl RIT häufig bei Betrieb und Wartung von HBase auftritt, ist es einfacher, RIT-Probleme zu lösen, ohne dass manuelle Eingriffe erforderlich sind Ein Eingriff ist nur dann erforderlich, wenn die RIT über einen längeren Zeitraum auftritt. Was ist also die langfristige Zeit für die RIT? Warum kommt es zu einer langfristigen RIT?
Wenn Sie die Versionen HBase 1.x und HBase 2.x verwendet haben, werden Sie offensichtlich das Gefühl haben, dass RIT in HBase 2.x weniger verbreitet ist. Tatsächlich besteht die Operation der Region hauptsächlich darin, die Region über die AssignmentManager-Klasse zu übertragen Bei den Codes der beiden Versionen haben wir festgestellt, dass der Standardwert des Versuchsparameters (Anzahl der Zuweisungswiederholungen) in den beiden Versionen unterschiedlich ist. Die Anzahl der Wiederholungsversuche in HBase 2.4.8 ist die maximale Ganzzahl .MAX_VALUE (während der Wert in HBase 1.x standardmäßig auf 10 eingestellt ist). Aus diesem Grund sind in HBase 2.x Gründe für eine langfristige RIT relativ selten.
RIT-Verarbeitungsmethode:
-
Beim Erstellen oder Löschen großer Tabellen kommt es zu RIT. Dies ist hauptsächlich auf die große Anzahl von Regionen und den hohen Druck auf den Cluster zurückzuführen, der zu langen Reaktionszeiten beim Zuweisen und Aufheben der Zuweisung führt. Für diese Art von Problem ist im Allgemeinen kein manueller Vorgang erforderlich Intervention und kann sich selbst heilen.
-
Wenn die Clusterversion 1.x ist, können Sie den Wert „hbase.assignment.maximum.attempts“ entsprechend anpassen, um die Anzahl der Wiederholungsversuche zu erhöhen. Beispielsweise können sich FAILED_OPEN und FAILED_CLOSE normalerweise selbst reparieren oder den Zuweisungsbefehl manuell ausführen, um sie jeweils zuzuweisen Region online (wenn es viele Regionen gibt, wechseln Sie zur HMaster-Reparatur).
-
Wenn die Regionszuweisung fehlschlägt und kein RegionServer vorhanden ist, kann die manuelle Zuweisung nicht wiederhergestellt werden. Beispielsweise ist die Region bogus.example.com zugewiesen und die Knoten 1 und 1 können nur durch Wechseln des HMaster wiederhergestellt werden.
Fragen zum Nachdenken:
Warum kann die Region auch nach manuellem Eingriff nicht normal online gehen und kann sie durch einen HMaster-Wechsel wiederhergestellt werden? (Siehe HMaster-Startprozess TransitRegionStateProcedure, Quellcode der HMaster-Klasse)
3.2 Region Loch
Wenn wir eine HBase-Tabelle erstellen und die Regionsregeln sorgfältig analysieren, werden wir überrascht sein, dass der Startschlüssel und der Endschlüssel der Region zu kontinuierlichen Intervallen gehören, die links geschlossen und rechts offen sind. Welche Probleme treten auf, wenn plötzlich einer auftritt? Fehlt eines dieser Intervalle (wie unten gezeigt)?
Die obige Situation ist das, was wir oft als Lücke in der Region bezeichnen. Wenn Sie zur Überprüfung das HBase-Hbck-Tool verwenden, wird die Fehlermeldung FEHLER angezeigt: Es gibt eine Lücke in der Regionskette zwischen 01 und 02. Sie müssen eine erstellen Neue .regioninfo und Region-Verzeichnis in HDFS, um die Lücke zu schließen. Wenn eine Lücke in einem HBase-Cluster auftritt, kann sie sich oft nicht selbst heilen und erfordert einen manuellen Eingriff. Nun, da wir wissen, dass eine Region fehlt, ist das nicht der Fall Reicht es aus, wenn wir nur die Region in das leere Intervall eintragen? Der normale Ansatz besteht darin, zunächst die leere Region wieder hinzuzufügen, zu prüfen, ob die Metatabelleninformationen korrekt sind, und schließlich mit der Region online zu gehen. Wenn diese Reihe von Vorgängen manuell ausgeführt wird, ist dies nicht nur fehleranfällig, sondern dauert auch eine Weile Hier sind die verschiedenen Versionen der HBase-Reparaturmethode. Obwohl sich die Verarbeitungsmethoden der verschiedenen Versionen geringfügig unterscheiden, ist der Verarbeitungsprozess derselbe.
Methode zur Verarbeitung von Regionslöchern:
(1) HBase 1.x-Reparaturmethode
-
HBase hbck –fixHdfsHoles : Erstellen Sie einen leeren Region-Dateipfad auf HDFS
-
HBase hbck -fixMeta : Reparieren Sie die Metatabellendaten, in denen sich die Region befindet
-
HBase hbck –fixAssignments : Region nach der Online-Reparatur
-
Oder HBase hbck –repairHoles entspricht einer Kombination aus (fixHdfsHoles, fixMeta, fixAssignments)
(2) HBase 2.4.8-Reparaturmethode (siehe später das Tool hbase-operator-tools)
Da HBase 2.4.8 keine relevanten Befehle zum Hinzufügen von Regionsverzeichnisoperationen bereitstellt, ist dies relativ problematisch. Tatsächlich bieten viele Toolklassen in HBase 2.4.8 Methoden zum Erstellen von Regionen und die HBaseTestingUtility-Klasse in hbase-server-2.4. Das 8-Test-Paket stellt sie bereit, um den regionalbezogenen Eingang zu betreiben. Unsere Lösung unten konzentriert sich hauptsächlich auf die Wiederherstellung basierend auf dieser Methode.
-
extraRegionsInMeta -fix : Löschen Sie zunächst die Datensätze, die nicht im HDFS-Verzeichnis in der Metatabelle vorhanden sind.
-
HBaseTestingUtility.createLocalHRegion : Erstellen Sie einen HDFS-Dateipfad, um die Kontinuität der Region sicherzustellen
-
addFsRegionsMissingInMeta : Neue Regionsinformationen zur Metatabelle hinzufügen (die Regions-ID wird zurückgegeben, nachdem das Hinzufügen erfolgreich war)
-
weist zu : Stellen Sie die neu hinzugefügte Region schließlich online
3.3 Regionsüberlappung
Wird es mehrere identische Start- und Endschlüssel geben, da es Lücken in der Region geben wird? Die Antwort lautet „Ja“. Wenn der Startschlüssel und der Endschlüssel mehrerer Regionen dieselbe Region sind, nennen wir diese Situation „überlappende Regionen“. Regionsüberlappungen sind in HBase schwer zu simulieren und stellen auch ein schwierig zu handhabendes Problem dar. Wenn wir eine hbck-Prüfung durchführen und diese Art von Protokoll angezeigt wird, erscheint FEHLER: Mehrere Regionen haben denselben Startschlüssel: 02
Eine andere Art von überlappender Region überschneidet sich mit dem Zeilenschlüsselbereich von einem oder zwei benachbarten Shards. Diese Art von Problem wird zusammenfassend als Überlappungsproblem bezeichnet. Für dieses schwierigere Szenario verwenden wir selbst entwickelte Tools, um das Wiederauftreten des Überlappungsproblems zu simulieren und zu reparieren die Überlappung mit einem Klick (Faltung) und Loch (Loch) Probleme.
Überlappungsproblem-Simulationsfunktion
Das Problem der Regionsüberlappung besteht tatsächlich darin, dass sich die Bereiche der Zeilenschlüssel von Region01 überlappen und der Bereich einer anderen Region02 (01,02) ist. Wenn sich die beiden Regionen überschneiden (01,02), meldet die HBK-Erkennung ein Überlappungsproblem.
In der Produktionsumgebung tritt das Überlappungsproblem nur dann auf, wenn die Region aufgeteilt ist und die Maschine gleichzeitig hängen bleibt. Die Bedingungen sind relativ rau und es ist schwierig, das Problem für später zu reproduzieren Reparaturen und Fehlerübungen Das Überlappungsproblem Reproduktionsprinzip:
Wiederauftreten des Überlappungsproblems
1) Generieren Sie einen Region-Shard mit überlappenden Zeilenschlüsselbereichen:
java -jar -Drepair.tableName=migrate:test_hole2 -Dfix.operator=createRegion -DRegion.startkey=06 -DRegion.endkey=07 hbase-meta-tool-0.0.1.jar
2) Verschieben Sie die Überlappungsproblemregion in das Tabellenverzeichnis:
sudo -uhdfs hdfs dfs -mv /tmp/.tmp/data/migrate/test_hole2/c8662e08f6ae705237e390029161f58f /hbase/data/migrate/test_hole2
3) Löschen Sie die Metatabelleninformationen der normalen Tabelle migrate:test_hole2:
java -jar -Drepair.tableName=migrate:test_hole2 -Dfix.operator=delete hbase-meta-tool-0.0.1.jar
4) Rekonstruieren Sie die Metadateninformationen der Überlappungsproblemtabelle:
java -jar -Drepair.tableName=migrate:test_hole2 -Dfix.operator=fixFromHdfs hbase-meta-tool-0.0.1.jar
5) Nach dem Neustart des Clusters meldete hbck, dass die Region c8662e08f6ae705237e390029161f58f überlappte, und das Überlappungsproblem wurde erfolgreich reproduziert.
Methode 1: Überlappungen und Löcher mit einem Klick reparieren
Geeignet für Fälle, in denen die Anzahl der Falten 64 nicht überschreitet, kann das selbst entwickelte Tool hbase-meta-tool verwendet werden, um die Bereiche benachbarter Regionen mit Zeilenschlüssel-Schnittpunkten zusammenzuführen und neue Regionen zu generieren, wenn Lücken oder fehlende Bereiche vorhanden sind dass das Problem behoben werden kann Prinzip der Problembehebung Wie im Bild gezeigt:
1) Cluster-Überlappungs- und Lochprobleme beheben:
java -jar -Dfix.operator= fixOverlapAndHole hbase-meta-tool-0.0.1.jar
Methode 2: Großflächige Faltreparatur
Geeignet für die groß angelegte Faltung von mehr als Tausenden oder Zehntausenden von Fällen zur Behebung serverseitiger Anomalien. Verwenden Sie die folgenden Reparaturmethoden
1) Löschen Sie die Metadaten von Tabellen mit Faltungsproblemen mit einem Klick:
java -jar -Drepair.tableName=migrate:test1 -Dzookeeper.address=zkAddress -Dfix.operator=delete hbase-meta-tool-0.0.1.jar
2) Sichern Sie die ursprünglichen Tabellendaten:
hdfs dfs -mv /hbase/data/migrate/test/ /back
3) Löschen Sie die Originaltabelle und importieren Sie die Sicherungsdaten für jeden Regions-Shard:
hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /back/test/region01-regionN migrate:test1
3.4 Reparatur von Metatabellendaten
In HBase-Online-Clustern können die folgenden schwierigen Probleme auftreten:
-
Die Coprozessortabelle ist falsch konfiguriert, der Coprozessorpfad kann nicht gefunden werden und das JAR kann beim Laden der Region nicht gefunden werden, was dazu führt, dass der Cluster wiederholt hängt und der Drop-Befehl ihn nicht löschen kann;
-
Die Anzahl der Elemente in der HBase-Metatabelle ist falsch, der Startcode ist falsch, die Tabelle des Servers kann während des Online-Prozesses nicht gefunden werden und die Tabelle wird nie online geschaltet.
Wir müssen die Problemtabelle unabhängig reparieren, ohne den Dienst zu stoppen, ohne andere Tabellendienste im Cluster zu beeinträchtigen.
Metadatenreparatur der Problemtabelle
1) Angenommen, es liegt ein Problem mit table migrate:test1 vor, können Sie die problematischen Tabellenmetadaten mit einem Klick löschen:
java -jar -Drepair.tableName=migrate:test1 -Dfix.operator=delete hbase-meta-tool-0.0.1.jar
2) Lesen Sie den Inhalt des .regioninfo-Ordners der HDFS-Tabelle und rekonstruieren Sie die korrekten Metadaten mit einem Klick:
java -jar -Drepair.tableName=migrate:test1 -Dfix.operator=fixFromHdfs hbase-meta-tool-0.0.1.jar
3.5 Meta kaputt
Die oben genannten fünf Situationen werden alle unter der Voraussetzung repariert, dass die Metatabelle normal online ist. Wenn die Metatabellendaten beschädigt sind und nicht online sein können, wie sollten wir sie reparieren? Normalerweise denken wir daran, die Metatabelle neu zu erstellen und dann die Regionsinformationen in die Metatabelle zu schreiben. Wenn der Cluster offline ist, kann die HBase-Shell oder die HBase-API normalerweise nicht „create“ ausführen, um die Tabelle zu erstellen.
Wir haben die Metatabellen-Initialisierungsklasse InitMetaProcedure analysiert und festgestellt, dass der Prozess der Metatabellenerstellung grob in zwei Schritte unterteilt ist:
1) Erstellen Sie das Regionsverzeichnis und die .tabledesc-Datei
2) Region zuweisen und online gehen.
InitMetaProcedure-Kernquellcode:
InitMetaProcedure
protected Flow executeFromState(MasterProcedureEnv env, InitMetaState state) throws ProcedureSuspendedException, ProcedureYieldException, InterruptedException {
try {
switch (state) {
case INIT_META_WRITE_FS_LAYOUT:
Configuration conf = env.getMasterConfiguration();
Path rootDir = CommonFSUtils.getRootDir(conf);
TableDescriptor td = writeFsLayout(rootDir, conf);
env.getMasterServices().getTableDescriptors().update(td, true);
setNextState(InitMetaState.INIT_META_ASSIGN_META);
return Flow.HAS_MORE_STATE;
case INIT_META_ASSIGN_META:
addChildProcedure(env.getAssignmentManager().createAssignProcedures(Arrays.asList(RegionInfoBuilder.FIRST_META_RegionINFO)));
return Flow.NO_MORE_STATE;
default:
throw new UnsupportedOperationException("unhandled state=" + state);
}
} catch (IOException e) {
}
private static TableDescriptor writeFsLayout(Path rootDir, Configuration conf) throws IOException {
LOG.info("BOOTSTRAP: creating hbase:meta region");
FileSystem fs = rootDir.getFileSystem(conf);
Path tableDir = CommonFSUtils.getTableDir(rootDir, TableName.META_TABLE_NAME);
if (fs.exists(tableDir) && !fs.delete(tableDir, true)) {
LOG.warn("Can not delete partial created meta table, continue...");
}
TableDescriptor metaDescriptor = FSTableDescriptors.tryUpdateAndGetMetaTableDescriptor(conf, fs, rootDir);
HRegion.createHRegion(RegionInfoBuilder.FIRST_META_RegionINFO, rootDir, conf, metaDescriptor, null).close();
return metaDescriptor;
}
Wir können auf die InitMetaProcedure-Codelogik zurückgreifen, um entsprechende Tools zum Erstellen von Tabellen zu schreiben und online zu gehen. Nachdem die Metatabelle online gegangen ist, müssen wir nur die Regionsinformationen jeder Tabelle in Meta schreiben und alle Regionen zuweisen, um online zu gehen, um den Normalzustand wiederherzustellen Status des Clusters. Durch den oben beschriebenen Prozess haben wir festgestellt, dass der Metatabellenreparaturprozess nicht so kompliziert ist. Wenn jedoch eine große Anzahl von Tabellen in der Produktionsumgebung oder Tausende von Regionen in einzelnen großen Tabellen vorhanden sind, wird das manuelle Hinzufügen sehr zeitaufwändig. Im Folgenden stellen wir den Prozess vor, der schon immer relativ einfach war (HBase 1.x-Hbck-Tool, HBase 2.x-Hbase-Operator-Tools). Werfen wir einen Blick auf den Offline-Reparaturprozess.
HBase 1.x-Korrekturen
-
Stoppen Sie den HBase-Cluster
-
sudo -u hbase hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair -fix
-
Starten Sie den Cluster neu, um die Reparatur abzuschließen.
HBase 2.4.8-Reparaturmethode (hbase-operator-tools-Tool)
1) Generieren Sie automatisch eine Metatabelle basierend auf dem HDFS-Pfad
-
Stoppen Sie den HBase-Cluster
-
sudo -u hbase hbase org.apache.hbase.hbck1.OfflineMetaRepair -fix
-
Starten Sie den Cluster neu, um die Reparatur abzuschließen.
2) Einzeltisch-Reparaturmethode
-
Löschen Sie das HBase-Stammverzeichnis in zookeeper
-
Löschen Sie das HDFS-WALs-Verzeichnis, in dem sich HMaster und RegionServer befinden
-
Nach dem Neustart des Clusters sind keine Daten in Meta vorhanden und der Cluster kann nicht in den Normalzustand wechseln.
-
Führen Sie den Befehl „add Region“ aus, um die vierstelligen Tabellen „hbase:namespace“, „hbase:quota“, „hbase:rsgroup“ und „hbase:acl“ zum Cluster hinzuzufügen. Nachdem das Hinzufügen abgeschlossen ist, druckt das Protokoll die Regionen, gefolgt von „Assigns“ und diesen Tabellen . Diese Regionen müssen für den nächsten Zuweisungsvorgang aufgezeichnet werden.
sudo -u hbase hbase --config /etc/hbase/conf hbck -j hbase-tools.jar addFsRegionsMissingInMeta hbase:namespace hbase:quota hbase:rsgroup hbase:acl
- Fügen Sie die Druckregion im vorherigen Schritt online hinzu
sudo -u hbase hbase --config /etc/hbase/conf hbck -j hbase-hbck2.jar assigns regionid
- Der Business-Tisch ist online (Sie müssen nur die Schritte 4-5 wiederholen, um den Business-Tisch nach und nach online zu schalten)
Vorsichtsmaßnahmen
(Wenn die Geschäftstabelle viele Regionen enthält und die fünfte Region nicht zugewiesen ist, können nicht alle Regionen erfolgreich online geschaltet werden. Sie müssen die Leistung deaktivieren und aktivieren, um normal online zu gehen.)
Hinweis: Das OfflineMetaRepair-Tool hbase-operator-tools weist die folgenden Fehler auf, die behoben werden müssen.
1. Der von der HBaseFsck-Methode createNewMeta erstellten Metatabelle fehlt die .tabledesc-Datei.
vor der Reparatur:
TableDescriptor td = new FSTableDescriptors(getConf()).get(TableName.META_TABLE_NAME);
Nach der Modifikation:
FileSystem fs = rootdir.getFileSystem(conf);
TableDescriptor metaDescriptor = FSTableDescriptors.tryUpdateAndGetMetaTableDescriptor(getConf(), fs, rootdir);
2. Der standardmäßige Regionsstatus von HBaseFsck genericPuts ist GESCHLOSSEN, da HMaster beim Neustart nur im OFFLINE-Status online geht (wenn es GESCHLOSSEN ist, ist der Arbeitsaufwand für das manuelle Online-Gehen nacheinander sehr groß).
vor der Reparatur:
addRegionStateToPut(p, org.apache.hadoop.hbase.master.RegionState.State.CLOSED);
Nach der Modifikation:
addRegionStateToPut(p, org.apache.hadoop.hbase.master.RegionState.State.OFFLINE);
Mangel
1) Bei der Offline-Reparatur muss der Clusterdienst angehalten werden. Die Stoppzeit hängt von der Reparaturzeit ab (ca. 10–15 Minuten).
2) Wenn es Probleme wie Regionsüberlappungen und Löcher gibt, müssen diese manuell bearbeitet werden, bevor der Offline-Reparaturbefehl OfflineMetaRepair ausgeführt wird.
4. hbase-operator-tools-Tool
hbase-operator-tools ist eine Reihe von Tools in HBase, die HBase-Administratoren bei der Verwaltung und Wartung von HBase-Clustern unterstützen. hbase-operator-tools bietet eine Reihe von Tools, darunter Sicherungs- und Wiederherstellungstools, Regionsverwaltungstools, Datenkomprimierungs- und -verschiebungstools usw., die Administratoren dabei helfen können, HBase-Cluster besser zu verwalten und die Stabilität und Zuverlässigkeit des Clusters zu verbessern. Sie müssen den Quellcode kompilieren, bevor Sie ihn verwenden können. Die Git-Adresse des Quellcodes . Gängige Befehle sind wie folgt:
5. Zusammenfassung
Die Datengenauigkeit der HBase-Metatabelle ist für den normalen Betrieb des HBase-Clusters von entscheidender Bedeutung. Es ist äußerst wichtig, sicherzustellen, dass die Metatabellendaten korrekt sind, und wie die Daten nach einer Beschädigung schnell repariert werden können Umfassendes Verständnis von Meta, Sie werden jedes Mal ratlos sein, wenn der Cluster ausfällt. Dieser Artikel konzentriert sich hauptsächlich auf die Analyse des Ladevorgangs der Metatabellenstruktur, häufige Probleme und verwandte Reparaturmethoden. Wir können die oben genannten Reparaturmethoden grob in die folgenden zwei Kategorien einteilen:
-
Online-Reparatur : Die Metatabelle kann normal über hbck und selbst entwickelte Tools repariert werden, um die Datenintegrität sicherzustellen.
-
Offline-Reparatur : Die Metatabelle kann nicht normal online gehen. Die Metatabelle wird basierend auf den Regionsinformationen in HDFS wiederhergestellt, um den HBase-Dienst wiederherzustellen.
Wenn der Clusterumfang relativ groß ist und die Offline-Reparaturzeit relativ lang ist, muss der Cluster seine Dienste für längere Zeit unterbrechen. In den meisten Fällen kann das Unternehmen Reparaturen auf Tabellenebene nicht tolerieren. es sei denn, die Metatabellendatei ist beschädigt und kann nicht normal online geschaltet werden. Es wird empfohlen, den Cluster regelmäßig zu überprüfen. Sobald eine Inkonsistenz der Metainformationen auftritt, beheben Sie diese so schnell wie möglich, um eine Ausbreitung des Problems zu vermeiden. Wenn die Metainformationen fehlerhaft sind und der Cluster neu startet und die fehlerhafte Region nicht zugewiesen werden kann, können andere Regionen nicht normal online gehen. Wenn bei der regelmäßigen Überprüfung festgestellt wird, dass in der Geschäftstabelle ein Metainformationsfehler vorliegt, Starten Sie es direkt neu. Die Metatabelle löscht die Tabelleninformationen und fügt die Region basierend auf den HDFS-Pfadinformationen wieder zur Metatabelle hinzu (der Befehl addFsRegions-MissingInMeta kann die Region basierend auf dem HDFS-Pfad korrekt zur Metatabelle hinzufügen).
Referenzartikel:
High-School-Schüler erstellen ihre eigene Open-Source-Programmiersprache als Coming-of-Age-Zeremonie – scharfe Kommentare von Internetnutzern: Unter Berufung auf die Verteidigung hat Apple den M4-Chip RustDesk veröffentlicht. Inländische Dienste wurden wegen grassierenden Betrugs eingestellt . In Zukunft plant er, ein unabhängiges Spiel auf der Windows-Plattform Taobao (taobao.com) zu produzieren. Webversionsoptimierungsarbeiten neu starten, Ziel für Programmierer, Visual Studio Code 1.89 veröffentlicht Java 17, die am häufigsten verwendete Java LTS-Version, Windows 10 hat eine Marktanteil von 70 %, Windows 11 geht weiter zurück ; Google unterstützt Hongmeng bei der Übernahme von Open-Source-Rabbit-R1;