HBase优化(二)

HBase优化(二),第1张

HBase优化(二) 3、内存优化

Hbase *** 作过程中需要大量的内存开销,毕竟Table是可以缓存在内存中的,但是不建议分配非常大的堆内存,因为GC过程持续太久会导致RegionServer处于长期不可用状态,一般16~36G内存就可以了,如果因为框架占用内存过高导致系统内存不足,框架一样会被系统服务拖死。

合理配置JVM内存

1. Hbase服务的堆内存设置

一般刚部署的Hbase集群,默认配置只给Master和RegionServer分配了1G的内存,RegionServer中的MemStore默认占0.4,即400M左右的空间,而一个MemStore刷写阈值配置默认是128M,也就是说,一个RegionServer再默认配置下也就正常管理3个Region,多了就会产生过多的小文件,同时也会增加发生Full GC的机率。一般建议合理调整Master和RegionServer的内存,如:

export Hbase_MASTER_OPTS="$Hbase_MASTER_OPTS -Xms8g -Xmx8g"
export Hbase_REGIONSERVER_OPTS="$Hbase_REGIONSERVER_OPTS -Xms32g -Xmx32g"

这里也要结合实际集群资源情况进行配置,另外要牢记至少保留10%的内存为 *** 作系统使用

2.合理配置读写缓存比例

Hbase为了性能优化,在读写路径上分别设置了读缓存和写缓存,这两部分的缓存配置参数分别是:

hfile.block.cache.size  // default = 0.4

hbase.regionserver.global.memstore.size  // default = 0.4

表示读写缓存各自占RegionServer堆内存的40%

在一些场景下,我们可以适当的调整两部分的比例,如:在写多读少的场景下,我们就可以适当的调大写缓存,让Hbase更好的支持写业务,反之亦然,总之两个参数要配合调整。

4、 基础优化 1.Zookeeper会话超时时间

配置文件:hbase-site.xml

属性:zookeeper.session.timeout

解释:默认值为90000毫秒(90s)。当某个RegionServer挂掉,90s之后Master才能察觉到并进行数据恢复。可适当减小此值,以加快Master响应,可调整至60000毫秒。(如果垃圾回收时间过长也会被误认为崩溃)

2.手动控制Major Compaction

配置文件:hbase-site.xml

属性:hbase.hregion.majorcompaction

解释:默认值:604800000秒(7天), Major Compaction的周期,若关闭自动Major Compaction,可将其设为0

3.优化HStore文件大小

配置文件:hbase-site.xml

属性:hbase.hregion.max.filesize

解释:默认值10737418240(10GB),如果需要运行Hbase的MR任务,可以减小此值,因为一个region对应一个map任务,如果单个region过大,会导致map任务执行时间过长。该值的意思就是,如果HFile的大小达到这个数值,则这个region会被切分为两个Hfile。

4.优化Hbase客户端缓存

配置文件:hbase-site.xml

属性:hbase.client.write.buffer

解释:默认值2097152bytes(2M)用于指定Hbase客户端缓存,增大该值可以减少RPC调用次数,但是会消耗更多内存,反之则反之。一般我们需要设定一定的缓存大小,以达到减少RPC次数的目的。

5.指定scan.next扫描Hbase所获取的行数

配置文件:hbase-site.xml

属性:hbase.client.scanner.caching

解释:用于指定scan.next方法获取的默认行数,值越大,消耗内存越大。

Scan缓存:一次Scan *** 作会返回大量数据,因此客户端发起一个Scan请求,实际并不会一次就将所有数据加载到本地,而是分成多次RPC请求进行加载。数据加载到本地就存放载Scan缓存中,默认是100条数据大小。这样设计,一方面是因为大量的数据请求可能会导致网络宽带严重消耗影响其他业务,另一方面可能造成客户端因数据量太大导致OOM。

6.BlockCache占用RegionServer堆内存的比例

配置文件:hbase-site.xml

属性:hfile.block.cache.size

解释:默认0.4,读请求比较多的情况下,可适当调大

7.MemStore占用RegionServer堆内存的比例

配置文件:hbase-site.xml

属性:hbase.regionserver.global.memstore.size

解释:默认0.4,写请求较多的情况下,可适当调大

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5699772.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存