Die Metadaten in Hadoop NN besteht aus:
fsimage
: enthält den vollständigen Zustand des Dateisystems zu einem Zeitpunkt
edit logs
: jeder Dateisystemänderung enthält (Datei erstellen/löschen/Änderung) das wurde nach dem letzten fsimage gemacht.
Wenn Sie alle Dateien in Ihrem NN Arbeitsbereich Verzeichnis auflisten, werden Sie Dateien zu sehen sind:
fsimage_0000000000000000000 (fsimage)
fsimage_0000000000000000000.md5
edits_0000000000000003414-0000000000000003451 (edit logs, there're many ones with different name)
seen_txid (a separated file contains last seen transaction id)
Wenn NN beginnt, wird Hadoop fsimage laden und alle bearbeiten Protokolle gelten, und in der Zwischenzeit eine Menge tun Bei Konsistenzprüfungen wird abgebrochen, wenn die Prüfung fehlgeschlagen ist. Sagen wir es geschehen lassen, ich werde rm edits_0000000000000000001-0000000000000000002
von vielen meiner edit logs
in meinem NN Arbeitsbereich, und versuchen dann zu sbin/start-dfs.sh
, ich werde Fehlermeldung in Protokoll erhalten wie:
java.io.IOException: There appears to be a gap in the edit log. We expected txid 1, but got txid 3.
So Ihre Fehlermeldung, dass Ihr edit logs
anzeigt ist inkonsistent (möglicherweise beschädigt oder einige von ihnen fehlen). Wenn Sie nur Hadoop auf Ihrem lokalen spielen möchten und seine Daten nicht interessieren, könnten Sie einfach hadoop namenode -format
neu formatieren und von Anfang an beginnen, sonst müssen Sie Ihre Bearbeitungsprotokolle von SNN oder irgendwo, die Sie zuvor gesichert haben, wiederherstellen.
Haben Sie einen Standby-Knoten? –