HDFS:如何分发小尺寸的文件?

时间:2013-09-16 12:25:48

标签: hadoop mapreduce hdfs bigdata

我有大量的小文件要存储在HDFS中。根据文件名,我想将它们存储在不同的数据节点中。通过这种方式,我可以实现以某些字母表开头的文件名,以进入特定的数据节点。如何在Hadoop中执行此操作?

1 个答案:

答案 0 :(得分:1)

不是一个很好的选择。理由:

  • Hadoop不擅长处理大量小文件。
  • 在一个节点中存储一个完整的文件违反了HDFS的一个基本原则,即分布式存储

我想知道这种方法会带来什么好处。


回应你的评论:

HDFS不像HBase那样进行任何排序。将文件放入HDFS时,首先将其拆分为小块,然后存储(每个块在不同的节点上)。所以没有什么比将整个文件发送到单个节点更好的了。您的文件(块)驻留在多个节点上。

您可以根据需要创建目录层次结构,并将文件存储在这些目录中(如果您打算根据文件的位置直接获取文件)。 例如,

/dirA
/dirA/A.txt
/dirA/B.txt
/dirB
/dirB/P.txt
/dirB/Q.txt
/dirC
/dirC/Y.txt
/dirC/Z.txt

但是,如果您真的想将特定文件的块发送到某些特定节点,那么您需要实现自己的块放置策略,这不是很容易。有关详细信息,请参阅 this