1

所以当我想处理一个大于我的 hdfs 块大小(64mb)的文件时,我得到了以下异常:

    2013-05-31 01:49:46,252 WARN org.apache.hadoop.mapred.Child: Error running child
java.io.IOException: Can't seek!
    at org.apache.hadoop.hdfs.HftpFileSystem$3.seek(HftpFileSystem.java:359)
    at org.apache.hadoop.fs.FSDataInputStream.seek(FSDataInputStream.java:37)
    at org.apache.hadoop.mapreduce.lib.input.LineRecordReader.initialize(LineRecordReader.java:76)
    at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:522)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    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:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)

我正在运行只有一个路径(一个文件)作为输入的作业。有趣的是,我实际上尝试将文件拆分为两个较小的部分,每个部分都小于块大小并且它以这种方式工作..比我连接文件并尝试连接文件但它没有再次工作.

我想我有一个配置问题,但我不知道是什么。我在 Hadoop 之上使用 HBase,而 HBase 似乎没有任何问题。

我将不胜感激有关此的任何想法/想法。提前致谢!

4

1 回答 1

2

HDFS-2457HDFS-2396中所述,hftp 方案不支持seek操作,因此预计会出现此错误。Hftp 本质上是一种通过 HTTP 访问文件系统的协议,我不确定您为什么使用它,但您应该改用绝对支持的 hdfs,seek并且您不应该再出现此错误。

于 2013-05-31T00:22:06.420 回答