Hadoop文件块大小的问题

KevinWen777 2014-04-18 12:03:53
将一个文件Map后输出多个文件,同名的在一个文件里。输入文件有20多兆,分出几千个小段(尽管最后输出的文件就10来个左右)。如果hdfs的文件块大小是64M,那么程序运行结果产生如下异常:



java.io.EOFException
at java.io.DataInputStream.readShort(DataInputStream.java:298)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.createBlockOutputStream(DFSClient.java:3060)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2983)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255)
at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446)

但如果把文件块的大小改成500KB,那就能成功运行,哪位大神能说说这是咋回事儿?不胜感激
...全文
464 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
五哥 2014-07-01
  • 打赏
  • 举报
回复
MultipleOutputs 真的不知道是怎么控制文件输出大小的 有谁知道怎么控制啊?
KevinWen777 2014-04-18
  • 打赏
  • 举报
回复
引用 1 楼 s060403072 的回复:
[quote=引用 楼主 Marshal0826 的回复:] 将一个文件Map后输出多个文件,同名的在一个文件里。输入文件有20多兆,分出几千个小段(尽管最后输出的文件就10来个左右)。如果hdfs的文件块大小是64M,那么程序运行结果产生如下异常: java.io.EOFException at java.io.DataInputStream.readShort(DataInputStream.java:298) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.createBlockOutputStream(DFSClient.java:3060) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2983) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446) 但如果把文件块的大小改成500KB,那就能成功运行,哪位大神能说说这是咋回事儿?不胜感激
你这个是集群方式的么?看下日志中你的客户端跟服务器每次的通信时间嘛,是不是64M的还没接完,就断开连接了[/quote] 我的是伪分布的
海兰 2014-04-18
  • 打赏
  • 举报
回复
引用 楼主 Marshal0826 的回复:
将一个文件Map后输出多个文件,同名的在一个文件里。输入文件有20多兆,分出几千个小段(尽管最后输出的文件就10来个左右)。如果hdfs的文件块大小是64M,那么程序运行结果产生如下异常: java.io.EOFException at java.io.DataInputStream.readShort(DataInputStream.java:298) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.createBlockOutputStream(DFSClient.java:3060) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2983) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2255) at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2446) 但如果把文件块的大小改成500KB,那就能成功运行,哪位大神能说说这是咋回事儿?不胜感激
你这个是集群方式的么?看下日志中你的客户端跟服务器每次的通信时间嘛,是不是64M的还没接完,就断开连接了

932

社区成员

发帖
与我相关
我的任务
社区描述
云计算 云存储相关讨论
社区管理员
  • 云存储
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧