我在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设置:
您建议使用哪些设置来查看\ tune以加快HBase的读取速度?
答案 0 :(得分:1)
升级到更新的稳定版本会有所帮助。任何0.92+都会有更新的HFile v2,它可以提供帮助。
使用启用布隆过滤器创建预分割表可以提供帮助。 我会尽量减少处理程序的数量。 http://archive.cloudera.com/cdh4/cdh/4/hbase/book.html#perf.handlers
70ms的读取延迟与我的预期相差甚远。查看gc调优并确保所有RegionServers都在运行,并为您尝试进行基准测试的表提供区域。
答案 1 :(得分:0)
答案 2 :(得分:0)
很难对HBase进行核心测试。您还应该提供有关您正在使用的查询的一些信息。
例如,在HBase中,即使您只撤回一行(在RowFilter中指定),带有RowFilter和QualifierPrefixFilter的扫描查询也可能非常慢。
然而,相同的查询,使用get而不是扫描和QualifierPrefixFilter完成得更快。