Eines Tages aufgrund unzureichender Clusterressourcen. Ein großer Bereich des HBase-Regionsservers blieb aufgrund einer Lastexplosion hängen, und einige Abfragen meldeten am nächsten Tag Fehler.
Einige Abfragen für eine Tabelle im Cluster können die Region nicht finden.
Ich habe versucht, den Cluster neu zu starten und den Cluster fortlaufend neu zu starten. Man ging davon aus, dass der fortlaufende Neustartprozess die Regionen auf dem Regionsserver nach außen und innen verschieben würde. Ich habe versucht zu sehen, ob es repariert werden kann, aber die entscheidende Reparatur schlug fehl. Denn durch Aus- und Einzug verändert sich die Region selbst nicht. Einfach ein- und ausziehen
Probieren Sie hbase hbck -details 'hbsxx_bsdb:taj_xxx_ktgg' aus, um den Status anzuzeigen
Entdecken
HBck-Fehler-Inkonsistenzen festgestellt
Ich habe mir den HBCK-Bericht zur Web-Benutzeroberfläche angesehen.
Es gibt 2 Löcher und 12 Überlappungen
Wahrscheinlich stimmt etwas mit den Metadaten nicht.
Versuche es zu reparieren
Zuerst müssen Sie das mitgelieferte hbck-Tool installieren, das nur angezeigt, aber nicht bedient werden kann. hbase2 hat die hbck-Komponente aufgegeben. HBCK2 wurde aus HBase entfernt und zu einem separaten Projekt. Wenn Sie dieses Tool verwenden möchten , Sie müssen Ihre eigene HBase-Version verwenden. Kompilieren Sie den Quellcode.
Die GitHub-Adresse lautet: https://github.com/apache/hbase-operator-tools.git
Ersetzen Sie die hbase-Version im POM durch Ihre tatsächliche hbase2.x-Version und führen Sie den Verpackungsbefehl im Projektstammverzeichnis aus:
Nachdem mvn clean install -DskipTests
gepackt wurde, gibt es mehrere JAR-Pakete. Nehmen Sie das benötigte hbck2 heraus, hbase-operator-tools/hbase-hbck2/target/hbase-hbck2-1.0.0-SNAPSHOT.jar.
Für cdh müssen Sie es von der offiziellen Website https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/admin_hbase_hbck.html herunterladen
implementieren
hbase hbck -j /path/hbck2.jar addFsRegionsMissingInMeta hbxxxsdb:taj_n04xxxktgg
Entschlossenheit ist nutzlos
und dann ausführen
hbase hbck -j /hbase-hbck2-<version>.jar extraRegionsInMeta --fix hbxxxsdb:taj_n04xxxktgg
An mich zurückgegeben. Keine nicht übereinstimmenden Regionen. Diese Tabelle ist gut und auch ungültig
Versuchen Sie es mit einem anderen Befehl
hbase hbck -j hbase-hbck2-<version>.jar filesystem --fix hbxxxsdb:taj_n04xxxktgg
Als ich sah, dass es nicht eine Sekunde lang endete, dachte ich, es könnte nützlich sein, aber am Ende hing es mehr als eine Stunde lang ohne Antwort. scheitern
hbase hbck -j hbase-hbck2-<version>.jar extraRegionsInMeta --fix hbxxxsdb:taj_n04xxxktgg
Ich erhalte immer noch die Meldung „Keine nicht übereinstimmenden Regionen, diese Tabelle ist ungültig“.
Gehen Sie zurück und überprüfen Sie die Benutzeroberfläche von hbase
Ich habe den vorherigen HBCK-Bericht überprüft und festgestellt, dass die Region, in der das Problem gemeldet wurde, leer war. Daher habe ich beschlossen, diese Region mit anderen Regionen zusammenzuführen. Es gibt eine Lücke weniger im Web, aber hbck in der Befehlszeile hat sich nicht geändert und es wird mir immer noch angezeigt, dass es eine Konfliktregion gibt.
Hot-Merge-Region über online_merge
hbase shell
merge_region '39erijidsfd8s098fen32j3i8d9','48jfidnxoskd023843257822j3i'
Region的hash值就是Region名称的最后那段在两个.之间的字符串部分
Da jedoch keine Lücke mehr vorhanden war, beschloss ich, es erneut mit get zu testen, und gab entschieden eine leere Rückgabe zurück, dass der Zeilenschlüssel nicht normal gefunden werden konnte. Keine Fehler mehr. Dann lassen Sie es von den Entwicklern testen. Entwicklungsfeedback kann wie gewohnt abgefragt werden