0

シンプルなマップ削減ジョブを実行しています。このジョブは、一般的なクロール データから 250 個のファイルを使用します。

例: s3://aws-publicdatasets/common-crawl/parse-output/segment/1341690169105/

50、100 個のファイルを使用すると、すべて正常に動作します。しかし、250個のファイルでこのエラーが発生します

java.io.IOException: Attempted read from closed stream.
    at org.apache.commons.httpclient.ContentLengthInputStream.read(ContentLengthInputStream.java:159)
    at java.io.FilterInputStream.read(FilterInputStream.java:116)
    at org.apache.commons.httpclient.AutoCloseInputStream.read(AutoCloseInputStream.java:107)
    at org.jets3t.service.io.InterruptableInputStream.read(InterruptableInputStream.java:76)
    at org.jets3t.service.impl.rest.httpclient.HttpMethodReleaseInputStream.read(HttpMethodReleaseInputStream.java:136)
    at org.apache.hadoop.fs.s3native.NativeS3FileSystem$NativeS3FsInputStream.read(NativeS3FileSystem.java:111)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
    at java.io.DataInputStream.readByte(DataInputStream.java:248)
    at org.apache.hadoop.io.WritableUtils.readVLong(WritableUtils.java:299)
    at org.apache.hadoop.io.WritableUtils.readVInt(WritableUtils.java:320)
    at org.apache.hadoop.io.SequenceFile$Reader.readBuffer(SequenceFile.java:1707)
    at org.apache.hadoop.io.SequenceFile$Reader.seekToCurrentValue(SequenceFile.java:1773)
    at org.apache.hadoop.io.SequenceFile$Reader.getCurrentValue(SequenceFile.java:1849)
    at org.apache.hadoop.mapreduce.lib.input.SequenceFileRecordReader.nextKeyValue(SequenceFileRecordReader.java:74)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.nextKeyValue(MapTask.java:532)
    at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67)
    at org.apache.hadoop.mapreduce.lib.map.MultithreadedMapper$SubMapRecordReader.nextKeyValue(MultithreadedMapper.java:180)
    at org.apache.hadoop.mapreduce.MapContext.nextKeyValue(MapContext.java:67)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:143)
    at org.apache.hadoop.mapreduce.lib.map.MultithreadedMapper$MapRunner.run(MultithreadedMapper.java:268)

手がかりはありますか?

4

1 に答える 1

0

入力を処理するために必要なマップ スロットの数は? 100近くありますか?

これは推測ですが、ファイルの最初のバッチを処理している間に S3 への接続がタイムアウトし、さらにファイルを処理するためにスロットが使用可能になると、接続が開かれなくなる可能性があります。NativeS3FileSystem からのタイムアウト エラーが IOExceptions として表示されると思います。

于 2013-01-08T04:06:45.327 に答える