首先,我是Hadoop的新手。
我有一个抛出 java.io.EOFException 的小型 Hadoop 管道程序。该程序将一个小文本文件作为输入,并使用 hadoop.pipes.java.recordreader 和 hadoop.pipes.java.recordwriter。输入非常简单,例如:
1 262144 42.8084 15.9157 4.1324 0.06 0.1
但是,Hadoop 会抛出 EOFException,我看不出原因。下面是堆栈跟踪:
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)
顺便说一句,我在完全分布式模式(具有 3 个工作节点的集群)上运行它。
任何帮助表示赞赏!谢谢