Tout d'abord, je suis un débutant de Hadoop.EOFException lancée par un programme de tuyaux Hadoop
J'ai un petit programme Hadoop pipes qui lance java.io.EOFException. Le programme prend en entrée un petit fichier texte et utilise hadoop.pipes.java.recordreader et hadoop.pipes.java.recordwriter. L'entrée est très simple comme:
1 262144 42.8084 15.9157 4.1324 0.06 0.1
Cependant, Hadoop lèveront une EOFException, que je ne vois pas la raison. Ci-dessous la trace de la pile :
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, j'ai couru ceci sur un mode entièrement distribué (un cluster avec 3 nœuds de travail).
Toute aide est appréciée! Merci
Merci! Malheureusement, augmenter la limite n'a pas fonctionné pour moi. D'autres idées? En attendant, je pense que je vais essayer de poster cette question sur la liste de diffusion hadoop – peng
Je serais intéressé par la réponse. Une partie de la raison pour laquelle cette stratégie est fausse est que le framework Hadoop n'invoque pas ses hypothèses WRT d'utilisation des descripteurs de fichiers. Spécifier un nombre arbitrairement élevé ne fonctionnera évidemment pas dans les cas où le système dépasse la limite. Vous pouvez également envisager de vérifier la limite du descripteur de fichier logiciel sur votre système, comme Hadoop semble le respecter. – MrGomez
Le problème a été résolu. C'était totalement mon mal. Il y avait une erreur de segmentation dans mon programme de tuyaux, qui a déclenché l'exception. Cependant, je pense que l'Exception semble mystérieuse pour les débutants comme moi. Peut-être que les gens de Hadoop peuvent polir le rapport d'erreur un peu? – peng