假设我有10万个大小为2 KB的文件,那么我可以将它存储在hdfs中吗?

时间:2016-11-24 08:07:41

标签: hadoop hdfs hadoop2

  
    

我被问到这样一个问题假设我有1000万个文件,大小为2 KB,那么我可以将它存储在hdfs中吗?请回答这个问题。

  

2 个答案:

答案 0 :(得分:2)

HDFS用于处理大文件。如果加载2 KB文件,它将增加名称节点上的开销和负载,因为它存储有关文件的元数据。

块大小是文件系统可以存储的最小数据单位。如果存储的文件大小为2kb,则会占用一个块。一旦越过64Mb边界,就需要第二个块,读取操作的数量将会很大,这将增加读取开销。

最好的方法是将所有2 Kb文件合并到一个文件中并将其保存在hadoop上。

答案 1 :(得分:0)

如果NameNode上有足够的内存用于所有文件元数据,您肯定可以存储在HDFS中。此外,不是通过使用默认的64 MB块大小浪费HDFS空间,而是可以指定每个文件的块大小,因此可以设置为2 KB(如果需要)。请注意,使用这样的HDFS通过减少每个文件块大小来存储大量的小文件是可以的。如果在大量小型文件上运行MapReduce计算,则会遇到问题。

另外,请注意64 MB是HDFS上的默认块大小,但您可以自由设置大尺寸(128 MB或256 MB或更大),甚至更小。 HDFS本身没有块大小的概念,它是底层的本机文件系统(通常是Linux)必须强制执行blocksize参数,而这正是Linux在幕后所做的。