我可以通过减少hdfs块大小来提高HBase性能吗?

use*_*798 3 hbase

我有大约2500个表参与计算.在我的开发环境中,我在这些表中的数据非常少,10到10,000行,大多数表位于此范围的下端.我的计算将多次扫描所有这些表.虽然整个数据集适合内存,但通过HBase轻松访问它的速度非常慢,磁盘活动量很大.

你认为它有助于减少hdfs块大小吗?我的理由是,如果每个表都在自己的块中,那么将浪费大量内存,从而阻止整个数据集驻留在RAM中.大大减小的块大小将允许系统保存RAM中的大部分(如果不是全部)数据.目前块大小为64MB.

最终系统将用于具有更多内存和节点的更大集群中,这纯粹是为了加速我的开发环境.

Arn*_*-Oz 5

HBase将其数据存储在HFile中(这些数据又存储在Hadoop文件中)这里是文档的摘录:

最小块大小.对于一般用途,我们建议将最小块大小设置在8KB到1MB之间.如果文件主要用于顺序访问,则首选较大的块大小.但是,它会导致低效的随机访问(因为有更多的数据需要解压缩).较小的块适用于随机访问,但需要更多内存来保存块索引,并且创建速度可能较慢(因为我们必须在每个数据块结束时刷新压缩器流,这会导致FS I/O刷新) .此外,由于压缩编解码器中的内部缓存,最小可能的块大小约为20KB-30KB.

无论块大小如何,您可能希望将表的列族设置为内存中的true,这使得hbase有利于将它们保留在缓存中.

最后你的情况似乎更适合像redis/memcache这样的缓存,而不是Hbase,但也许我没有足够的上下文