Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.io.IOException:hadoop mapreduce中距离太远无效_Hadoop_Mapreduce - Fatal编程技术网

java.io.IOException:hadoop mapreduce中距离太远无效

java.io.IOException:hadoop mapreduce中距离太远无效,hadoop,mapreduce,Hadoop,Mapreduce,我在一些mapreduce工作中遇到了这个奇怪的错误 java.io.IOException: invalid distance too far back at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.inflateBytesDirect(Native Method) at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.decompress(ZlibDecom

我在一些mapreduce工作中遇到了这个奇怪的错误

java.io.IOException: invalid distance too far back
    at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.inflateBytesDirect(Native Method)
    at org.apache.hadoop.io.compress.zlib.ZlibDecompressor.decompress(ZlibDecompressor.java:221)
    at org.apache.hadoop.io.compress.DecompressorStream.decompress(DecompressorStream.java:89)
    at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:83)
    at org.apache.hadoop.io.compress.DecompressorStream.read(DecompressorStream.java:71)
    at java.io.DataInputStream.readByte(DataInputStream.java:248)
    at com.contextin.io.VersionedWritable.readFields(VersionedWritable.java:60)
    at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:73)
    at org.apache.hadoop.io.serializer.WritableSerialization$WritableDeserializer.deserialize(WritableSerialization.java:44)
    at org.apache.hadoop.io.SequenceFile$Reader.deserializeValue(SequenceFile.java:2180)
    at org.apache.hadoop.io.SequenceFile$Reader.getCurrentValue(SequenceFile.java:2164)
    at org.apache.hadoop.mapred.SequenceFileRecordReader.getCurrentValue(SequenceFileRecordReader.java:103)
    at org.apache.hadoop.mapred.SequenceFileRecordReader.next(SequenceFileRecordReader.java:78)
    at com.contextin.model.workflow.AggregateFilesMR$CustomKeyValueLineRecordReader.next(AggregateFilesMR.java:632)
    at com.contextin.model.workflow.AggregateFilesMR$CustomKeyValueLineRecordReader.next(AggregateFilesMR.java:595)
    at org.apache.hadoop.mapred.lib.CombineFileRecordReader.next(CombineFileRecordReader.java:61)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.moveToNext(MapTask.java:215)
    at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.next(MapTask.java:200)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:48)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:417)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:332)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:268)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:396)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1408)
    at org.apache.hadoop.mapred.Child.main(Child.java:262)
一些事实(可能相关,也可能不相关):

  • 该作业使用CustomCombineFileInputFormat—也就是说,每个映射器可以处理多个文件

  • 这个错误确实经常发生,但并不总是(因此它似乎不是纯粹的bug或软件错误)

  • 某些数据集比其他数据集更经常导致此错误(因此它似乎至少与数据相关)

  • 但是对于相同的数据集,作业有时成功,有时失败——因此严格来说,这不是一个数据问题

  • 在计算机上运行的某些作业(不特别是失败的作业)具有较高的内存要求,这会导致某些任务由于内存问题而失败。尽管此特定错误似乎与内存无关


从进一步的测试来看,这似乎是一个数据问题。 单独读取某些文件(而不是mapreduce)会导致问题始终存在


我没有很好的解释为什么任务失败的次数在两次运行之间发生变化

“因此这完全是一个数据问题。”你的意思是说它不是严格正确的吗?根据:压缩文件可能会被破坏看到它-但这与同一数据集的作业有时会成功完成的事实不一致。这感觉很像竞争条件,我们有几个问题与此类似,但堆栈跟踪不同:)一个有趣的问题,您是否对其他序列化格式使用可写性?您的意思是什么:“您是否对其他序列化格式使用可写性”如果这是您的意思,我们使用自定义可写性。