记一次HBase写入优化测试

网友投稿 770 2022-05-29

业务环境中,如果有大批量的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写入优化测试

调整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

Hadoop HBase

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:开发框架Spring Boot 详解
下一篇:《OpenStack高可用集群(上册):原理与架构》—1.1.2 业务导向与IT弹性需求
相关文章