记一次HBase写入优化测试
业务环境中,如果有大批量的Hbase写需求,可以根据服务器资源情况进行一定的调整,优化参数:
- 调整HMaster、RegionServer进程的堆内存大小
Hbase Master Maximum Memory和Hbase RegionServer Maximum Memory主要控制Master和RegionSserver能够使用的内存大小,根据需求适当调整大小。在此次测试环境中都调整为32G
- 调整读、写缓冲区大小
调整RegionServer的读和写缓冲区的大小,此处0.4为40%,读写缓存的总和控制在80%以内,否则可能造成Hbase无法启动的情况。
根据写需求,可加大Hbase.regionserver.global.memstore.size的比例
默认读写缓存比例值都为40%
测试环境中主要是为提高写速度,所以读调整为10%,写调整为70%
- 调整memstore的flush size
Flush Size控制Memstore的超过一定至,就进行Flush刷新,如果创建Hbase表未创建,系统默认参数一遍为128M,在写入请求多的情况下,可调整至256MB
- 调整HBase Region Block Multipiler参数配置
默认值为2,如果memstore的内存大小已经超过了hbase.hregion.memstore.flush.size的2倍,则会阻塞memstore的写操作,直到降至该值以下,为避免发生阻塞,最好调大该值,比如:4或8
本次测试环境中调整为8
- 调整Number of Handlers Per RegionServer参数配置
每个RegionServer开启的RPC监听程序的总数,默认值为100,如果写入的进程多,可适当加大数量
本次调整为当前版本最大值240
- 在custome hbase-site中修改或添加如下配置
设置hbase.hstore.flusher.count为8
设置hbase.regionserver.thead.compaction.small为10
- 采用预分区方式创建HBase表
n_splits=100
create 'test_lp01',{NAME=>'info',VERSIONS=>'1',COMPRESSION=>'NONE',BLOOMFILTER => 'NONE',BLOCKSIZE=>'8192',IN_MEMORY=>'true'},{SPLITS=>(1..n_splits).map{|i|"user#{1000+i*(9999-1000)/n_splits}"}}
- 使用YCSB工具执行纯写入操作,在写入的时候关闭HBase的WAL。
./bin/ycsb load hbase10 -P ./workloads/workloada_insert -p columnfamily=info -p threadcount=100 -p table=test_lp01 -p durability=SKIP_WAL -p recordcount=10000000 –s
机器配置:
物理机
内存:512GB
处理器:32核
磁盘:HDD
往HBase中写入1千万条数据,每条数据1K大小,写入性能结果如下:
Min=158, Avg=1922.58, 90=4175, 99=5775, 99.9=17647, 99.99=236287]
[OVERALL], RunTime(ms), 242936.0
[OVERALL], Throughput(ops/sec), 41163.104686007835
[TOTAL_GCS_PS_Scavenge], Count, 428.0
[TOTAL_GC_TIME_PS_Scavenge], Time(ms), 2017.0
[TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 0.830259821516778
[TOTAL_GCS_PS_MarkSweep], Count, 0.0
[TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0.0
[TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0
[TOTAL_GCs], Count, 428.0
[TOTAL_GC_TIME], Time(ms), 2017.0
[TOTAL_GC_TIME_%], Time(%), 0.830259821516778
[CLEANUP], Operations, 200.0
[CLEANUP], AverageLatency(us), 621.21
[CLEANUP], MinLatency(us), 1.0
[CLEANUP], MaxLatency(us), 122303.0
[CLEANUP], 95thPercentileLatency(us), 24.0
[CLEANUP], 99thPercentileLatency(us), 67.0
[INSERT], Operations, 1.0E7
[INSERT], AverageLatency(us), 2411.8575726
[INSERT], MinLatency(us), 158.0
[INSERT], MaxLatency(us), 356351.0
[INSERT], 95thPercentileLatency(us), 5451.0
[INSERT], 99thPercentileLatency(us), 6511.0
[INSERT], Return=OK, 10000000
- 点赞
- 收藏
- 关注作者
评论(0)