如何在Hbase中使用大(1000万条记录)小(平均240字节)记录大小来提高随机get操作的性能?

如何在Hbase中使用大(1000万条记录)小(平均240字节)记录大小来提高随机get操作的性能?,hbase,performance-testing,random-access,Hbase,Performance Testing,Random Access,我有一个包含四个列系列(共10列)的Hbase表,主键是一个固定的10字节id。平均行大小为240字节 当我在HBase中测试100万行的随机get操作时,它得到1000多行/s,平均0.25MB/s 但是当我用1000万行测试同一个操作时,它得到160行/秒,0.04MB/s。在阅读了一些资料后,我将HBASE_HEAPSIZE从1G增加到5G,之后我得到了320行/秒,0.08MB/秒(缓存命中率为87%),但仍然远低于一百万测试套件的速度 它有什么方法来提高性能吗?谢谢。对于随机获取:

我有一个包含四个列系列(共10列)的Hbase表,主键是一个固定的10字节id。平均行大小为240字节

当我在HBase中测试100万行的随机get操作时,它得到1000多行/s,平均0.25MB/s

但是当我用1000万行测试同一个操作时,它得到160行/秒,0.04MB/s。在阅读了一些资料后,我将HBASE_HEAPSIZE从1G增加到5G,之后我得到了320行/秒,0.08MB/秒(缓存命中率为87%),但仍然远低于一百万测试套件的速度

它有什么方法来提高性能吗?谢谢。

对于随机获取:

  • 减少块大小,不超过64kb,32k应该是好的
  • 在表的行级别添加bloom过滤器
  • 通过将low region file max设置为1Go或更低,将表拆分为多个区域,并预拆分表(按国家、商户或任何您想要的方式)
  • 激活内存中的
  • 使用快速压缩编解码器(lzo或snappy都很好)
  • 在客户端使用tablepool
  • 使用memcache(…)

享受;)

非常感谢你的有用建议,我现在就试试。似乎从0.94开始,HBase的tablepool就被弃用了,据说具有相同配置的新HTable()与tablepool具有相同的效果。