hbase 内存_hbase性能优化包含哪些选项

hbase 内存_hbase性能优化包含哪些选项概况: 生产环境HBase集群内存经常处于高位(90%),而且GC之后也是内存依然处于高位,经分析内存全部由集群的regionserver进程所持有,,经常重启之后,大概3-4天就会保持在高位。由上…

内存总是不够?HBase&GeoMesa配置优化了解一下

概况:

生产环境HBase集群内存经常处于高位(90%),而且GC之后也是内存依然处于高位,经分析内存全部由集群的regionserver进程所持有,,经常重启之后,大概3-4天就会保持在高位。由上述症状,可以判断集群内存有泄露的嫌疑。

分析

1、先熟悉一下HBase的内存模型

HBase系统中有两块大的内存管理模块,一块是MemStore ,一块是BlockCache,前置是用于集群写入所属内存,而后者用于缓存热数据,提供查询速度。这两者均可以通过配置文件进行配置。当前集群均配置了0.4和0.4的比例。而考虑到HBase集群是多写少读的情景,为此而引入了MSLAB机制来优化HBase的MemStore 负担。内存的使用率会呈现很优美的锯齿图形。

hbase 内存_hbase性能优化包含哪些选项

2、分析内存使用率和业务关系

起初认为是读写业务量已经超过了集群负载能力,但集群业务也不大,写和读的TPS,带宽吞吐量均未达到集群限定的能力,而且CPU利用率大多半都被GC占用,但内存就是持高不下,即使业务了停了一天,内存还是不怎么下降,很明显和业务量无关。

那么和compaction有关?经观察的确可以看compact时特别消耗时间。此时感觉看到了希望,调整各个参数,把compact操作提升了10+倍之后,内存还是持高不下 。剩下最根治的办法就是分析内存,看一下内存数据都是什么?有无内存泄露问题。

hbase 内存_hbase性能优化包含哪些选项

3、分析dunp文件

节点dump下regionserver的内存,分析发现内存中有50个RpcServer.FifoRWQ.default.read.handler线程,每个线程持有了1.2%左右的总内存,那么所有的线程持有的内存占有量大于为50*1.2%=60%。随着查询次数增多,线程持续的内存还会持续增加,如下图。

hbase 内存_hbase性能优化包含哪些选项

分析每一个线程持有的内存数据,全部都是业务信息。

hbase 内存_hbase性能优化包含哪些选项

那么继续分析,此业务信息所属对象:org.locationtech.geomesa.filter.factory.FastFilterFactory。而对比同规模的集群,的确是此异常集群开启了GeoMesa特性。找到问题所在,那就看源码分析是唯一出路。

解决方案

经分析GeoMesa源码,缓存数据为GeoMesa的filterCache,全部都是查询的条件及其优化后查询条件。如下代码:

override def getOrElseUpdate(key: K, op: => V): V = {
 val cached = caches.get.getIfPresent(key)
 if (cached != null) { cached } else {
 val value = op

 

//value=optimize(sft, ECQL.toFilter(ecql))

 

caches.get.put(key, value)
     value
   }
 }

导致集群随着查询次数增多,内存一直持续不下。

能否去掉此处缓存策略呢?为什么缓存此查询信息呢,目的就是为了减少同样的查询再次被优化的步骤。那么我们查询添条件key有没有重复使用,此处有个严格规定,就是key中不仅保证使用相同的GeoMesa函数还有使用相同的参数,基于这个原则,业务上查询条件是没有重复的。

我们配置了可选参数useFilterCache,默认是开启的,没必要缓存此查询条件,应予以删除。

结论

在配置文件中添加了useFilterCache参数,默认是开启的,根据业务需要选择开始和关闭filterCache特效。

经分析我们业务场景没必要缓存此查询条件,,应予以关闭。优化后的集群内存使用率情况就恢复了正常状态。

hbase 内存_hbase性能优化包含哪些选项

 

点击关注,第一时间了解华为云新鲜技术~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6779.html

(0)
上一篇 2023-04-04
下一篇 2023-04-04

相关推荐

  • Python模块:Pandas数据处理与分析

    Python模块:Pandas数据处理与分析Pandas是一个数据处理和分析的Python库,在数据的清洗、整理、处理、分析等方面提供了很多功能,使得数据分析变得更加高效、简便。它的核心是两个数据结构:Series和DataFrame。Series是一种一维数组,可以用来存储一些列标签或一些应用标签的数据,而DataFrame则是二维结构,类似于表格,可以存储多种类型的数据。Pandas是基于Numpy框架建立的,可以很好地与其它科学计算库协作使用。

    2024-03-27
    79
  • 让数据处理更加高效:使用Python NumPy数组

    让数据处理更加高效:使用Python NumPy数组在数据科学和机器学习领域,数据处理一般是数据工作流程中最耗费时间的部分。Python是最流行的数据处理语言之一,但如果使用Python内置的数据类型,如列表和字典来处理大量数据,处理速度会很慢。这时候,NumPy数组的使用可以大大提高处理效率。

    2024-02-24
    104
  • Python中使用字典实现高效查找

    Python中使用字典实现高效查找Python中的字典是一种无序的、可变的、可迭代的数据类型。字典中的元素都是用键值对的形式来表示,每个键值对之间用冒号隔开,不同的键值对之间用逗号隔开,整个字典需要用花括号{}来包裹。

    2023-12-29
    114
  • Redis入门(5) – 消息通知

    Redis入门(5) – 消息通知使用列表实现任务队列 优先级队列 按照规则订阅 Redis也可以作为任务队列。任务队列顾名思义,就是“传递任务的队列”。任务队列与消息队列什么区别呢?任务队列是逻辑模型,而消息队列是通信模型,两者是不

    2023-03-06
    152
  • 没光驱怎么重装电脑系统「终于解决」

    没光驱怎么重装电脑系统「终于解决」不少用户不知道没光驱怎么重装电脑系统,下面就一起具体了解下。 1第一步打开云骑士装机大师,选择启动U盘界面,并且在电脑上插入U盘,点击制作U盘启动盘开始制作 2第二步接着就进入了选择系统的界面,在这…

    2023-04-10
    166
  • 腾讯云TDSQL基本原理-读写分离

    腾讯云TDSQL基本原理-读写分离当处理大数据量读请求的压力大、要求高时,可以通过读写分离功能将读的压力分布到各个从节点上。 TDSQL MySQL版 默认支持读写分离功能,架构中的每个从机都能支持只读能力,如果配置有多个从机,将由网

    2023-04-20
    163
  • MySQL实战45讲之基础篇 – flowers「终于解决」

    MySQL实战45讲之基础篇 – flowers「终于解决」本文主要记录学习MySQL实战45讲之基础篇过程中一些新的收获,以及总结主要内容。其中包括SQL如何运行、日志系统、事务隔离、索引和锁等。

    2023-04-22
    159
  • sql在视图中查询_sql中的子查询的用法

    sql在视图中查询_sql中的子查询的用法前几篇我们一起学习了 SQL 如何对表进行创建、更新和删除操作、SQL SELECT WHERE 语句如何指定一个或多个查询条件 和 SQL 如何插入、删除和更新数据 等数据库的基本操作方法。 从本文

    2023-05-21
    203

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注