dremio部署相关概念

本文详细介绍了Dremio架构,包括协调器和执行器节点,以及内存使用,特别是堆内存和直接内存的配置策略。提供内存监控方法和性能优化建议,如调整内存大小、优化SQL查询和元数据刷新等。
摘要由CSDN通过智能技术生成
一 、 dremio 架构

dremio 由 一个协调器节点 和 若干 执行器节点  组成

1:协调器节点:可以配置一 个或多个节点作为主协调器角色。建议对 Dremio 集群使用单个协调器节点。

2:执行器节点:可以配置一 个或多个节点的执行器角色。执行程序节点的数量取决于您的负载。例如,当您有大量查询(大量数据或大量计算)和/或大量查询时,将增加执行程序节点的数量。

  • 内存概念

内存通过 /etc/dremio/dremio-env 文件进行配置。

当此配置文件从默认值更改时,必须在所有节点上更新它

配置完成后可以通过 sql commend 查看项目信息

select  * from sys.nodes  --查看节点信息

1 、堆内存使用率和 GC 频率(Heap Memory Usage and GC Frequency   )

Dremio 使用堆内存进行规划、协调、UI 服务、查询管理、连接管理以及某些类型的记录读取等类型的任务。在高并发部署中,协调器节点中的堆内存预计更高。当观察时,持续的高垃圾回收 (GC) 频率和高堆内存使用率将表明集群/节点大小过小

2 、直接内存 (Direct Memory)

Dremio 使用直接内存执行查询执行任务,直接影响性能和并发性。Dremio 还使用直接内存进行执行器和协调器节点之间的 RPC 通信,以及与最终用户进行通信。在执行程序节点上的查询执行期间,预计会大量使用直接内存。持续的高直接内存使用率将表明集群/节点接近其容量。

三、配置最大内存、堆内存和直接内存

在安装过程中,Dremio 软件会自动确定可用的系统内存量,并在堆内存和直接内存之间分配它,具体取决于 Dremio 节点类型。

当您持续监控查询工作负载的性能并调整 Dremio 配置时,您可能需要调整节点上分配的内存量。根据您的工作负载,Dremio 支持可能会建议您使用该 DREMIO_MAX_MEMORY_SIZE_MB 参数调整最大可用内存,或者直接配置直接内存。

如果同时配置堆内存和直接内存,则忽略该 DREMIO_MAX_MEMORY_SIZE_MB 参数。

 如果仅配置堆内存或直接内存,则 Dremio 软件会根据剩余内存量自动配置另一个。

四、堆内存和直接内存 建议 配置规则

建议您调整堆内存的最大允许大小和/或直接内存的最大允许大小

1:若要更改节点上堆内存的最大大小,请修改以下行:

DREMIO_MAX_HEAP_MEMORY_SIZE_MB=4096

2:若要更改直接内存的最大大小,请修改以下行:

DREMIO_MAX_DIRECT_MEMORY_SIZE_MB=8192

注意对于 DREMIO_MAX_DIRECT_MEMORY_SIZE_MB 分配,请确保为操作系统保留至少 1-2 GB 的内存

默认情况下,如果未设置, 最大堆内存 则 最大直接内存 按如下方式设置:

Coordinator Nodes 协调器节点

1:如果 最大内存 为 ≥18 GB,则堆为 16 GB,直接内存 使用剩余的容量。

2:如果 最大内存 为 <18 GB,则 直接内存 为 2 GB,堆使用剩余的容量。

Executor Nodes 执行器节点

1: 如果 最大内存 为 ≥32 GB,则堆为 8 GB,直接内存 使用剩余的容量。

2 :如果  最大内存为 ≥6 GB,则堆为 4 GB,Direct 使用剩余部分。

3: 否则,堆内存 为 2 GB,直接内存  使用剩余的 GB。

五、堆监视器

为了防止由于堆内存不足而导致 JVM 故障,如果 JVM 的堆利用率保持在 85% 的阈值以上,Dremio 的堆监视器会终止查询,即使在完全垃圾回收之后也是如此。在执行器节点上,堆监视器评估当前正在运行的查询,并杀死释放大约 25% 的内存堆所需的查询。如有必要,堆监视器将再次运行以终止更多查询。在协调器节点上,堆监视器取消规划阶段的所有查询。默认情况下,该功能处于启用状态。

执行程序节点上的堆监视器终止的查询的查询配置文件包含以下错误:

Query was cancelled because it exceeded the memory limits set by the administrator.

协调器节点上终止的查询的查询配置文件包含以下错误:

Query canceled - out of memory, check the query profile for details

Dremio 建议在堆监视器终止查询时按顺序尝试以下建议:

1:重试查询 

   如果在第二次尝试期间并行查询较少,则查询应成功

2:减少查询并行度。

3:增加堆内存。

4:增加执行程序节点的数量。

六、通过系统函数 实时监控内存大小 

select  now()
       ,memory.direct_current     as "当前直接内存大小"
       ,memory.direct_max         as "最大直接内存大小"
       ,memory.heap_current       as "当前堆内存大小"
       ,memory.heap_max           as "最大堆内存大小"
       ,memory.jvm_direct_current as "jvm直接内存大小"
from sys.memory

七、性能优化

Dremio 是一个功能强大的平台,可以处理大量数据。要使 Dremio 环境发挥最佳性能,应遵循这些设计原则和实施最佳实践。

1、性能优化的维度

1:优化集群

在优化 Dremio 集群的性能时,应考虑几个因素。提交给 Dremio 的查询必须由协调员计划,然后才能路由执行。始终有一个主协调器,以及可选的其他横向扩展协调器,用于协助规划 JDBC/ODBC 查询。协调器生成一个查询计划,可用于将查询路由到属于群集的引擎之一。

2:sql查询优化

有些查询可能从一开始就消耗过高的资源。这些查询可以自行重写和优化,而不考虑更大的集群。

3:优化执行 器

除了单个查询之外,我们还关注执行器节点的执行环境。这些节点具有单独的内存和 CPU 约束。Dremio 中的执行器也是引擎的一部分,该引擎将执行器组合在一起,以跨多台计算机并行处理查询。运行查询的引擎的大小可能会影响其性能和处理其他查询的能力。

   4:利用反射提高性能

 找到计算成本高的查询 ,或者数据量大的查询 设置反射提高性能

5:优化元数据刷新性能

向 Dremio 群集添加专用元数据刷新引擎将确保执行程序服务的所有元数据刷新活动将与任何其他工作负载隔离。专用引擎可避免元数据刷新工作负载的任何问题,从而占用关键业务工作负载的 CPU 周期和内存,并确保它们有最佳机会及时完成。

  • 25
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Spring Boot中集成Dremio,你可以通过添加Dremio相关依赖来实现。首先,你需要在pom.xml文件中添加Dremio的Maven依赖。例如: ```xml <dependencies> <!-- Dremio依赖 --> <dependency> <groupId>com.dremio</groupId> <artifactId>dremio-jdbc-driver</artifactId> <version>1.4.0</version> </dependency> </dependencies> ``` 然后,你需要在application.properties或application.yml文件中配置Dremio的连接信息,包括URL、用户名和密码。例如: ```properties spring.datasource.url=jdbc:dremio:direct=localhost:31010 spring.datasource.username=<your-username> spring.datasource.password=<your-password> ``` 最后,你可以在你的代码中使用Dremio的数据源来访问和操作Dremio数据库。例如,你可以使用JdbcTemplate来执行SQL查询: ```java @Autowired private JdbcTemplate jdbcTemplate; public List<Map<String, Object>> queryDataFromDremio() { String sql = "SELECT * FROM your_table"; return jdbcTemplate.queryForList(sql); } ``` 这样,你就可以在Spring Boot中成功集成Dremio,并使用Dremio的功能进行数据操作了。 #### 引用[.reference_title] - *1* *3* [玩转 Spring Boot 集成篇(MySQL、Druid、HikariCP)](https://blog.csdn.net/javaforwork/article/details/122677832)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【Spring Boot 集成应用】RocketMQ的集成用法(上)](https://blog.csdn.net/hxx688/article/details/126083504)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝闻道 ||

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值