加速HBase读取响应

S B*_*S B 6 benchmarking hbase latency database-performance ycsb

我在Amazon XLarge实例(16Gb RAM,4核CPU)上部署了4个节点HBase v0.90.4-cdh3u3集群,其中8Gb堆-Xmx分配给HRegion服务器,2Gb用于数据节点.HMaster\ZK\Namenode位于单独的XLarge实例上.目标数据集是1亿条记录(每条记录是10个字段,100个字节).基准测试从并行100个线程同时执行.

与YCSB团队在YCSB论文中所取得的成绩相比,我对阅读延迟感到困惑.它们的吞吐量高达7000 ops/sec,延迟为15 ms(第10页,读取延迟图表).在90%读取/ 10%写入工作负载时,我无法获得高于2000 ops/sec的吞吐量.写入非常快,禁用自动提交(响应在几毫秒内),而读取延迟平均不低于70毫秒.

这些是我使用的一些HBase设置:

  • hbase.regionserver.handler.count = 50
  • hfile.block.cache.size = 0.4
  • hbase.hregion.max.filesize = 1073741824
  • hbase.regionserver.codecs = LZO
  • hbase.hregion.memstore.mslab.enabled =真
  • hfile.min.blocksize.size = 16384
  • hbase.hregion.memstore.block.multiplier = 4
  • hbase.regionserver.global.memstore.upperLimit = 0.35
  • hbase.zookeeper.property.maxClientCnxns = 100

您建议使用哪些设置来查看\ tune以加快HBase的读取速度?

ecl*_*ark 1

升级到较新的稳定版本会有帮助。任何 0.92+ 版本都会有较新的 HFile v2,这确实很有帮助。

  • 0.94 已经发布,并且有几个版本。
  • 如果您更喜欢 CDH 构建,CDH 4.1有一个基于 0.92.1 的 HBase。

在启用布隆过滤器的情况下创建预分割表确实很有帮助。我会尝试稍微减少处理程序的数量。http://archive.cloudera.com/cdh4/cdh/4/hbase/book.html#perf.handlers

70 毫秒的读取延迟与我的预期相差甚远。查看 gc 调整并确保所有 RegionServer 都在运行并且具有您要进行基准测试的表的区域。