dremio 是基于java 开发的,对于jvm 以及系统内存的配置就很重要了
最大内存(推荐配置)
最大内容,可以方便dremio 自动基于节点类型进行heap 以及direct 内存的分配
参数 DREMIO_MAX_MEMORY_SIZE_MB=16384
同时我们可以自己配置heap 以及direct 内存,但是有一些约定
- 如果都指定了,那么最大的就忽略了
- 如果一个指定了,dremio 自动基于遗留的内存进行调整
heap 内存
参考DREMIO_MAX_MEMORY_SIZE_MB=16384
direct 内存
DREMIO_MAX_DIRECT_MEMORY_SIZE_MB=16384
说明,注意需要给os 保留至少1-2G内存
默认配置
如果没有设置,dremio 自动进行计算,规则如下
- 协调节点
If DREMIO_MAX_MEMORY_SIZE_MB is ≥18 GB, Heap is 16 GB and Direct uses the remaining.
If DREMIO_MAX_MEMORY_SIZE_MB is <18 GB, Direct is 2 GB and Heap uses the remaining. - 执行节点
If DREMIO_MAX_MEMORY_SIZE_MB is ≥32 GB, Heap is 8 GB and Direct uses the remaining.
If DREMIO_MAX_MEMORY_SIZE_MB is ≥6 GB, Heap is 4 GB and Direct uses the remaining.
Otherwise, Heap is 2 GB and Direct uses the remaining
注意DREMIO_MAX_MEMORY_SIZE_MB内存至少是4G
heap 监控
dremio 自己包含了一个heap 监控,对于heap 超过了阈值的85%会进行查询的kill
对于执行节点dremio 会尝试进行至少释放25%的heap 内存,如果碰到类似的问题,可以尝试
加大heap 内存,重试,增加执行节点,以及减少查询的并行度
log 配置
我们可以基于环境变量进行配合,比如
DREMIO_LOG_DIR=/var/log/dremio
参考资料
https://docs.dremio.com/advanced-administration/dremio-env.html
https://docs.dremio.com/deployment/memory-config.html