加速HBase读取响应

时间:2012-04-06 07:33:53

标签: hbase benchmarking database-performance latency 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 paper 中所取得的成绩相比较。它们的吞吐量高达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的读取速度?

3 个答案:

答案 0 :(得分: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

70ms的读取延迟与我的预期相差甚远。查看gc调优并确保所有RegionServers都在运行,并为您尝试进行基准测试的表提供区域。

答案 1 :(得分:0)

这不是一个直接的答案。我建议你设置Ganglia来监控HBase的性能。您可以按照at herehere说明操作。

获得指标后,您可以识别系统的瓶颈并对其进行一些调整。

答案 2 :(得分:0)

很难对HBase进行核心测试。您还应该提供有关您正在使用的查询的一些信息。

例如,在HBase中,即使您只撤回一行(在RowFilter中指定),带有RowFilter和QualifierPrefixFilter的扫描查询也可能非常慢。

然而,相同的查询,使用get而不是扫描和QualifierPrefixFilter完成得更快。