Wie kann man das Problem lösen? Datei konnte nur in 0 Knoten anstelle von 1 in Hadoop repliziert werden?

8

Ich habe einen einfachen Hadoop-Job, der Websites crawlt und sie im HDFS zwischenspeichert. Der Mapper prüft, ob bereits eine URL im HDFS existiert und verwendet sie andernfalls, lädt die Seite herunter und speichert sie im HDFS.

Wenn beim Herunterladen der Seite ein Netzwerkfehler (404 usw.) auftritt, wird die URL vollständig übersprungen - nicht in das HDFS geschrieben. Immer, wenn ich eine kleine Liste ~ 1000 Webseiten betreibe, scheint ich immer auf diesen Fehler zu stoßen, der den Job wiederholt in meiner pseudoverteilten Installation zum Absturz bringt. Was könnte das Problem sein?

Ich betreibe Hadoop 0.20.2-cdh3u3.

%Vor%     
Raj 03.04.2012, 04:16
quelle

3 Antworten

2

Das Problem war eine nicht geschlossene FileSystem InputStream-Instanz im Mapper, die zum Zwischenspeichern der Eingabe in das Dateisystem verwendet wurde.

    
Raj 13.04.2012, 10:12
quelle
1

Wenn Sie nach Quellen suchen, haben Sie wahrscheinlich auf Ihrem lokalen Computer (oder VM) keinen Platz mehr. Diese Ausnahme wird verursacht, wenn das System nicht genügend Knoten für die Replikation finden kann. Die für die Auswahl der Knoten zuständige Klasse ist ReplicationTargetChooser.

Ссылка

Die Hauptmethode ist chooseTarget (Zeile 67).
Nach dem Eintauchen in Code gelangen Sie in die Methode isGoodTarget, die ebenfalls prüft, ob auf dem Knoten genügend Platz ist: Zeile 404.
Wenn Sie Debug-Protokolle aktivieren, werden Sie wahrscheinlich die entsprechende Nachricht sehen.

    
David Gruzman 03.04.2012 06:12
quelle
1

Bitte überprüfen Sie die namenode-Protokolle, die den Zeitstempeln entsprechen. Wenn es einen Hinweis auf Probleme mit IPC gibt, haben Sie wahrscheinlich keine "Xcievers" mehr. In meinem Fall habe ich dfs.datanode.max.xcievers in hdfs-site.xml auf einen größeren Wert gesetzt, zB 4096 oder 8192, und habe dieses Problem für mich behoben.

    
Jens Vöckler 18.06.2012 17:34
quelle

Tags und Links