6

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

与 YCSB 团队在他们的YCSB 论文中取得和展示的成果相比,我对我得到的读取延迟感到困惑。他们实现了高达 7000 ops/sec 的吞吐量,延迟为 15 毫秒(第 10 页,读取延迟图表)。在 90% 读取/10% 写入工作负载上,我无法获得高于 2000 次操作/秒的吞吐量。在禁用自动提交的情况下写入速度非常快(在几毫秒内响应),而读取延迟平均不低于 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=true
  • hfile.min.blocksize.size=16384
  • hbase.hregion.memstore.block.multiplier=4
  • hbase.regionserver.global.memstore.upperLimit=0.35
  • hbase.zookeeper.property.maxClientCnxns=100

您建议查看哪些设置以加快 HBase 读取速度?

4

3 回答 3

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 调优并确保您的所有 RegionServer 都在运行,并且具有您尝试进行基准测试的表的区域。

于 2012-11-19T21:19:20.093 回答
0

这不是一个直接的答案。我建议您设置Ganglia以监控 HBase 的性能。您可以按照此处此处的说明进行操作。

一旦有了指标,您就可以识别系统的瓶颈并对其进行一些调整。

于 2013-02-25T16:23:05.857 回答
0

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

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

但是,使用 get 而不是 scan 和 QualifierPrefixFilter 完成的相同查询要快得多。

于 2015-06-09T05:47:38.950 回答