我应该合并更大的文件中的部分文件,以达到最大块大小

时间:2017-08-16 09:47:14

标签: hadoop hdfs

我收集了多条推文并将它们存储在hdfs中。 我知道我的hdfs中有很多部分文件。 它们非常小,如0.5 Ko,因为只有一条推文存储在一个文件中。 我想知道是否可以让他们喜欢这样,或者将它们合并到更大的文件中以便尝试达到最大块大小更好。

1 个答案:

答案 0 :(得分:1)

由于许多原因,小文件问题对HDFS来说是一个很大的问题。

  • Namenode在内存中维护文件系统结构。在这种情况下,更多文件意味着主机上的RAM要求更高。
  • 小文件也不适合阅读,因为网络协议用于传输数据。在为各个节点建立连接以准备要处理的拆分时,您的应用程序将遭受更高的延迟(例如,当静态图像组件聚合到中等大小的图像文件中并进一步提取时,Web应用程序中使用相同的技术用CSS)。
  • 小文件也会导致较低的I / O吞吐量,因为无论何时存储较大的文件,底层磁盘放置算法都有更高的概率将数据放在相邻的磁盘段上,从而可以顺序提取信息。 / LI>
  • 每个存储的块都会创建一个元数据文件,该文件存储用于数据完整性检查的校验和。元数据文件大小约为1兆字节。在您的情况下,这意味着您的存储将保留更多的元数据,然后是实际信息。

小文件可能存在其他问题,这些问题依赖于集成到基础架构中的其他组件。

长话短说:在一个单独的文件中存储一条推文是一个好主意。尝试寻找特定的数据提取工具(例如Kafka),因此您可以将已预处理的大型文件写入系统。