HDFS与HBASE:哪一个在数百万个小文本文件上表现更好?

时间:2016-11-25 16:01:07

标签: performance hadoop hbase hdfs

如果我们有数百万个小文本文件,其大小从几KB到几MB不等,那么HDFS和HBASE中的哪一个需要较少的处理时间? 还有更少的内存消耗?

2 个答案:

答案 0 :(得分:4)

这是一个高级别的问题。缺少有关数据类型的信息。但是,一般而言,我们需要在决定存储位置等事项时牢记以下事项?在HDFS或HBase中:

由于我们的文件质量较小,因此将其存储在HDFS中存在一些问题。

  1. 名称节点上的元数据将为高
  2. 如果未正确配置块大小(输入拆分大小),则为full 数据局部性和并行处理的潜力不会 利用。有关Input split和。之间关系的更多信息 块大小,请参考         Split size vs Block size in Hadoop

    因此,除非您有充分理由这样做,否则几乎不会将其存储在HDFS中。

  3. 如果我们选择存储在HDFS中,我们可以将文件合并在一起,使其足够大到块大小吗?这对性能有何影响?

    然而,HBase克服了这些问题,因为它将数据存储在表中,也通过压缩方法存储。但在将HBase作为存储平台之前,我们需要考虑以下几点:

    1. 手边的数据是否有适合HBase的模式?或者数据是否有架构?
    2. 我们可以构造一个适合可以跨HBase Region Servers传播的数据的行密钥吗?
    3. 如果我们对所有这些问题都有答案,我们可以得出结论。建议您在这些方面回顾您的数据并做出谨慎的决定。这不是解决方案,而是您应该思考和继续的方式或方向。

答案 1 :(得分:0)

如果您有数百万个小文件,从KB到MB不等,HDFS和MapReduce作业对于处理数据来说太过分了。

HBase 是解决此问题的另一种方法。但您还有其他选择,例如 Hadoop存档文件(HAR)序列文件

参考这些相关的SE问题:

Parsing millions of small XML files

Difference between HBase and Hadoop/HDFS