首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否允许通过合并或重新分区来合并HDFS中的小文件(但合并后会很大)?

问是否允许通过合并或重新分区来合并HDFS中的小文件(但合并后会很大)?
EN

Stack Overflow用户
提问于 2022-03-22 10:30:43
回答 1查看 476关注 0票数 0

我正在使用HDFS -接收器-连接器来使用Kafka的数据进入HDFS。

Kafka连接器每10分钟写一次数据,有时写入文件的大小非常小,从2MB到100 2MB不等。因此,编写的文件实际上浪费了我的HDFS存储空间,因为每个块大小都是256 my。

这个目录是按日期创建的;所以我想通过每天的批处理将许多小文件合并到一个大文件中是很棒的。(我预计HDFS将自动将一个大文件分割成块大小。)

我知道有很多答案说我们可以使用spark的coalesce(1)或repartition(1),但是如果我读取整个目录并使用这些函数,我担心OOM错误;如果我读取每个文件,可能会超过90 be ~100 be。

HDFS是否允许90~100 be?我不需要担心吗?有人能告诉我是否有合并小型HDFS文件的最佳实践吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-22 10:59:21

因此,编写的文件实际上浪费了我的HDFS存储空间,因为每个块大小都是256 my。

HDFS不“填写”块中未使用的部分。因此,2MB文件只使用磁盘上的2MB (如果您使用3x复制,则为6MB )。HDFS上的小文件主要关注的是,数十亿个小文件可能导致问题。

如果我读取整个目录并使用这些函数,我担心OOM错误。

Spark可能是一个内存中的处理框架,但是如果数据不适合内存,它仍然可以工作。在这种情况下,处理会溢出到磁盘上,并且会稍微慢一些。

是否允许90~100 in的HDFS?

这是绝对好的--毕竟这是一个大数据。正如您注意到的,实际文件将在后台被分割成较小的块(但除非使用hadoop fsck,否则不会看到这一点)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71570484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档