まず第一に、私は 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 つの作業ノードを持つクラスター) で実行しました。
どんな助けでも大歓迎です!ありがとう