2017-03-31 2 views
2

Ich bin mit dem hadoop in meinem lokalen System starten, aber während ./start-all.sh Befehl ausgeführt wird seine alle Funktionen außer Namen Knoten ausgeführt wird, während es läuft Verbindung immer abgelehnt und in Protokolldatei druckt unter Ausnahmekann den Namen Knoten in hadoop

java.io.ioexception : there appears to be a gap in the edit log, we expected txid 1, but got txid 291. 

Können Sie mir bitte helfen.

+0

Haben Sie einen Standby-Knoten? –

Antwort

1

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.

1

Starten Sie namenode mit aktiviertem Wiederherstellungs-Flag. Verwenden Sie den folgenden Befehl

./bin/hadoop namenode -recover