HDFS Sequence File 存一个大文件,还是存多个小文件?

目前正在使用Sequence File对已有数据进行(BLOCK)压缩。

有两种存储方式

  • 一个大文件,所有记录都保存在这个文件里面

  • 多个小文件,文件大小正好和HDFS block大小一致(128MB)

数据split决定mapper数量,而split默认是block大小,所以当进行MR计算的时候,以上两种方式没有什么区别。

目前我知道第二种方式的缺点就是namenode需要维护更多的文件,而第一种方式就一个文件。

网上太多的文章说把多个小文件合并成一个大文件,当然这里的“小”是指小于block大小(128MB),这句话很好理解。
但是当每个文件都正好是block大小时,还有必要合并吗?或者说,没必要把一个超大的文件分割成多个block大小的小文件? 还是有必要分割?

欢迎大家讨论下。谢谢!

阅读 3.7k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进