Zunächst einmal bin ich ein Neuling von Hadoop.EOFException von einem Hadoop-Programm geworfen
Ich habe ein kleines Hadoop-Pipes-Programm, das java.io.EOFException auslöst. Das Programm nimmt als Eingabe eine kleine Textdatei und verwendet hadoop.pipes.java.recordreader und hadoop.pipes.java.recordwriter. Der Eingang ist sehr einfach wie:
1 262144 42.8084 15.9157 4.1324 0.06 0.1
jedoch Hadoop wird eine EOFException werfen, die ich nicht den Grund sehen kann. Unten ist der Stack-Trace:
10/12/08 23:04:04 INFO mapred.JobClient: Running job: job_201012081252_0016
10/12/08 23:04:05 INFO mapred.JobClient: map 0% reduce 0%
10/12/08 23:04:16 INFO mapred.JobClient: Task Id : attempt_201012081252_0016_m_000000_0, Status : FAILED
java.io.IOException: pipe child exception
at org.apache.hadoop.mapred.pipes.Application.abort(Application.java:151)
at org.apache.hadoop.mapred.pipes.PipesMapRunner.run(PipesMapRunner.java:101)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
at org.apache.hadoop.mapred.Child.main(Child.java:170)
Caused by: java.io.EOFException
at java.io.DataInputStream.readByte(DataInputStream.java:267)
at org.apache.hadoop.io.WritableUtils.readVLong(WritableUtils.java:298)
at org.apache.hadoop.io.WritableUtils.readVInt(WritableUtils.java:319)
at org.apache.hadoop.mapred.pipes.BinaryProtocol$UplinkReaderThread.run(BinaryProtocol.java:114)
BTW, ich das verteilte voll-Modus auf einen lief (ein Cluster mit drei Arbeits Knoten).
Jede Hilfe ist willkommen! Danke
Vielen Dank! Leider hat das Erhöhen des Limits für mich nicht funktioniert. Noch mehr Ideen? Unterdessen denke ich, dass ich versuchen werde, diese Frage auf der Hadoop-Mailing-Liste zu posten – peng
Ich würde mich für die Antwort interessieren. Ein Teil des Grundes, dass diese Strategie falsch ist, ist, dass das Hadoop-Framework seine WRT-Verwendung von Dateideskriptoren nicht angibt. Die Angabe einer beliebig hohen Zahl funktioniert offensichtlich nicht, wenn das System das Limit überschreitet. Sie können auch das Limit für Softdeskriptoren auf Ihrem System überprüfen, da Hadoop dies zu respektieren scheint. – MrGomez
Das Problem wurde behoben. Es war total schlecht. Es gab einen Segmentierungsfehler in meinem Pipes-Programm, der die Exception ausgelöst hat. Allerdings denke ich, dass die Ausnahme Neulingen wie mir geheimnisvoll erscheint. Vielleicht können die Hadoop-Leute die Fehlerberichte etwas aufpolieren? – peng