Hbase参数调优

注: 前面两个是在hbase-env.sh文件中,其它的都是hbase-site.xml中

HBase Master Maximum Java heap size
Hmaster进程最大使用堆空间大小,默认1G,如果内存充裕可调到2-4G

RegionServers maximum Java heap size
RegionServer进程最大使用堆空间大小,默认2G,Cloudera专家建议内存设置不要超过18GB,Region Server管理的Region个数不要超过300个。

hbase.regionserver.handler.count=100
该配置定义了每个Region Server上的RPC Handler的数量。Region Server通过RPC Handler接收外部请求并加以处理。所以提升RPC Handler的数量可以一定程度上提高HBase接收请求的能力。当然,handler数量也不是越大越好,这要取决于节点的硬件情况。

hbase.hregion.max.filesize=10737418240
配置项的含义是当region的大小大于设定值后hbase就会开始split,可根据存储内容进行适当调整。比如是存储文件的话那应该将此值设置更大。

hbase.hregion.majorcompaction=0
major、compaction的执行周期,默认是一天,可以设置为0禁用。利用后台调度,在业务不忙的时间点单独运行。

hbase.hregion.memstore.block.multiplier=4
容忍缓存中写入数据超过hbase.hregion.memstore.flush.size缓冲区最大的倍数;
每次写入时,判断超出缓存的倍数后,不能再写入,阻塞,等待flush完成后,会进行GC回收,regionserver会暂停完成flush,并gc回收后,则继续接收数据; 这个过程中容易出现regionserver服务暂停,与hmaster失败心跳超时,引起regionserver下线。

hbase.hregion.memstore.flush.size=134217728
当一个region里的memstore占用内存大小超过(memstore.flush * mestore.block.multiplier) 时执行flush。默认128M不建议调大(可根据硬盘的写入速度来适当调整)。

hbase.balancer.period=1800000
RegionServer负载均衡特定时间间隔,默认5分钟,可是稍微调长至半个小时。

hfile.block.cache.size=0.4
HFile文件的块缓存大小占堆内存大小的比例,如果对读性能要求很高,可稍微调大一点。

hbase.regionserver.global.memstore.upperLimit=0.4
当ReigonServer内所有region的memstores所占用内存总和达到heap的40%时,HBase会强制block所有的更新并flush这些region以释放所有memstore占用的内存。

hbase.server.thread.wakefrequency=500
每间隔hbase.server.thread.wakefrequency时间(默认10s)检查一次regionserver缓冲区大小,超过hbase.hregion.memstore.flush.size此大小则flush刷新到hdfs文件中;
若此参数间隔太久,且数据写入太多,会引起长时间的阻塞等待flush;因此高并发写入时,此参数要适当调小。

hbase.hstore.blockingStoreFiles=20
在flush时,当一个region中的Store(Coulmn Family)内有超过xx个storefile时,则block所有的写请求进行compaction。设置过小会使影响系统吞吐率(使吞吐率不高)。建议将该值调大一些,(但也不应过大,经验值是20左右吧。太大的话会在系统压力很大时使storefile过多,compact一直无法完成,扫库或者数据读取的性能会受到影响)。

hbase.hstore.compactionThreshold=6
hbase.hstore.compactionThreshold:HStore的storeFile数量>= compactionThreshold配置的值,则可能会进行compact,默认值为3,可以调大,比如设置为6,在定期的major compact中进行剩下文件的合并。

hbase.hregion.memstore.mslab.enabled=true
启用hbase0.90x版本引入的一种高级机制来缓解region服务器内存碎片文件。

客户端参数
Write Buffer Size
HTable htable = new HTable(config, tablename);
htable.setWriteBufferSize(6 * 1024 * 1024);
htable.setAutoFlush(false);
HBase Client会在数据累积到设置的阈值后才提交Region Server。这样做的好处在于可以减少RPC连接次数,达到批次效果。

hbase.client.keyvalue.maxsize=10485760
connection.getConfiguration().set(“hbase.client.keyvalue.maxsize”, “104857600”);
列族的最大值,默认10M,如果存储内容超过10M则需更改次值。

hfile.block.cache.size
Get get = new Get(rowkey.getBytes());
get.setCacheBlocks(false); //不进行block缓存

WAL
Put put = new Put(“test”.getBytes(“UTF-8”));
put.setDurability(Durability.SKIP_WAL);
其实不推荐关闭WAL,关闭WAl日志后,如果RegionServer当掉的话,会导致还没有flsh到HDFS上的数据丢失。除非有很好的数据重跑机制,否则不推荐关闭。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值