我在 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 读取速度?