HDFS 开启 SCR 对 Hbase 的性能提升
2017-11-23 本文已影响121人
breeze_lsw
HDFS short circuit local read
HDFS client 和 HDFS datanode 通过 TCP socket 进行通信,client 发起请求,datanode读取数据,通过RPC将数据传给 client 。如果client 和 数据在同一个节点上,那么通过 datanode 就会增加额外的开销。在这种场景下,HDFS提供了一个 local read 的机制 ,让 client 直接读取本地的数据而不是通过 datanode。
测试准备
软件 | 版本 |
---|---|
HBASE | 1.2.0-cdh5.9.2 |
HDFS | 2.6.0-cdh5.9.2 |
YCSB | 0.12.0 |
- 5台 regionServer/datanode 机器 (32C, 128G, 24*480G SSD)
- 开启hdfs和hbase相应SCR配置
- 使用YCSB进行数据准备,分别为5000W条,字段数为10,单条大小为1KB的数据,1000W条,单条大小为100KB的数据
- 使用YCSB进行查询测试。
- 数据写入HBASE后使用flush命令清空memstore,清空系统缓存。
- 建表时指定SNAPPY压缩,关闭BLOCKCACHE。
结果

类型 | Throughput(ops/sec) | avg(us) | p95(us) | p99(us) |
---|---|---|---|---|
SCR-1k | 48793 | 723 | 973 | 2661 |
noSCR-1k | 35170 | 1283 | 1735 | 3217 |
SCR-100k | 2524 | 4419 | 6955 | |
noSCR-100k | 4020 | 6099 | 9351 |
注意事项
- 如果缓存命中率很高,启用SCR并不会带来多大的性能提升。
- https://issues.apache.org/jira/browse/HDFS-12528
参考
HDFS Short Circuit Local Read Performance Benchmarking with Apache Accumulo and Apache HBase