3

我试图运行 Norstadt 先生在以下链接http://www.norstad.org/matrix-multiply/index.html下提出的矩阵乘法示例。我可以使用 hadoop 0.20.2 成功运行它,但我尝试使用 hadoop 1.0.3 运行它,但出现以下错误。是我的hadoop配置问题还是作者在hadoop 0.20中编写的代码中的兼容性问题。另外请指导我如何在任何一种情况下修复此错误。这是我得到的错误。

in thread "main" java.io.EOFException
        at java.io.DataInputStream.readFully(DataInputStream.java:180)
        at java.io.DataInputStream.readFully(DataInputStream.java:152)
        at org.apache.hadoop.io.SequenceFile$Reader.init(SequenceFile.java:1508)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1486)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1475)
        at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1470)
        at TestMatrixMultiply.fillMatrix(TestMatrixMultiply.java:60)
        at TestMatrixMultiply.readMatrix(TestMatrixMultiply.java:87)
        at TestMatrixMultiply.checkAnswer(TestMatrixMultiply.java:112)
        at TestMatrixMultiply.runOneTest(TestMatrixMultiply.java:150)
        at TestMatrixMultiply.testRandom(TestMatrixMultiply.java:278)
        at TestMatrixMultiply.main(TestMatrixMultiply.java:308)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

提前致谢

问候, waqas

4

2 回答 2

5

我也遇到了同样的问题,在我的情况下它给出了异常,因为我没有关闭SequenceFile.Writer对象。sequenceFileWriter.close()当我在代码中添加语句时,问题得到了解决。

此外,如果 MapReduce 程序中的输入是一些以前的MapReduce程序的输出,那么您必须显式编写代码以忽略文​​件_SUCCESS

PS:我正在使用 CHD4 Cloudera Hadoop 配置

于 2013-04-30T02:10:34.933 回答
2

我猜对了。事实上,它没有自动过滤 _SUCCESS 文件,并且由于读取问题中提到的这个日志文件异常正在发生。我过滤了文件,现在它工作正常。这是我如何过滤文件的链接FileSystem.liststatus 中的过滤日志文件(_success 和 _log)

于 2012-05-30T15:27:33.737 回答