HDFS小文件设计

时间:2017-09-01 15:01:37

标签: hadoop hbase hdfs avro parquet

我希望能够在HDFS上存储数百万个小文件(二进制文件 - 图像,exe等)(~1Mb),我的要求基本上是能够查询随机文件而不是运行MapReduce作业。 我的主要问题是Namenode内存问题,而不是MapReduce映射器问题。

所以我的选择是:

  1. HAR文件 - 聚合小文件,而不是用另一个地方的har://路径保存它们
  2. 序列文件 - 在它们进入时附加它们,这更适合MapReduce作业,所以我几乎消除了它
  3. HBase - 将小文件保存到Hbase是google上的一些文章中描述的另一种解决方案
  4. 我想我在问我是否错过了什么?我可以通过将二进制文件添加到大型Avro / ORC / Parquet文件来实现我所需要的吗?然后通过名称或来自java / client程序的哈希查询它们?

    谢谢,

1 个答案:

答案 0 :(得分:1)

如果将多个文件附加到大文件中,则需要维护每个小文件所在的大文件的索引。这基本上就是Hbase将为您做的事情。它将数据组合成大文件,将它们存储在HDFS中,并使用按键排序来支持快速随机访问。听起来像Hbase会满足你的需求,如果你自己亲自动手,你最终可能会重做很多Hbase已经完成的工作。