drill 学习 五 配置说明- 内存
关于 drill 的配置主要包含了:
- 内存配置
- 多租户配置
- 安全配置
- 性能以及功能配置
- 查询profile以及数据配置配置
内存配置
drill 使用包含了jvm 的直接内存,堆内存,核心使用最多的是直接内存,默认是8G,但是推荐配置更好(drill 高效使用了内存)
大部分场景drill使用的是内存,并不使用磁盘,jvm 堆内存默认是4G,4-8G基本就够用了
- 修改分配的内存
默认位置/conf/drill-env.sh 修改需要重启
参考选项
#export DRILLBIT_MAX_PROC_MEM=${DRILLBIT_MAX_PROC_MEM:-"13G"}
//Maximum cumulative memory allocated to the Drill process during startup. This option was introduced in Drill 1.13.
#export DRILL_HEAP=${DRILL_HEAP:-"4G"}
//Maximum theoretical heap limit for the JVM per node.
#export DRILL_MAX_DIRECT_MEMORY=${DRILL_MAX_DIRECT_MEMORY:-"8G"}
//Java direct memory limit per node.
#export DRILLBIT_CODE_CACHE_SIZE=${DRILLBIT_CODE_CACHE_SIZE:-"1G"}
//Do not modify the DRILLBIT_CODE_CACHE_SIZE. The value for this parameter is auto-computed based on the heap size and cannot exceed 1GB.
一些说明
比如DRILLBIT_MAX_PROC_MEM=40G,则以下的配置总和不能超过40G
DRILL_HEAP=8G
DRILL_MAX_DIRECT_MEMORY=10G
DRILLBIT_CODE_CACHE_SIZE=1024M
- 修改查询的内存分配
可以将Drill分配给每个查询的内存量配置为硬限制或占总直接内存的百分比。在planner.memory.max_query_memory_per_node和planner.memory.percent_per_query选项设置的存储器,drill可分配给一个节点上的查询量。这两个选项均默认启用。在这两个选项中,Drill选择提供最多内存的设置
如果修改每个查询分配的内存,并继续遇到内存不足错误,则可以尝试减小该planner.width.max_per_node选项的值。减小此选项的值会降低每个节点的并行度。但是,这可能会增加查询完成所需的时间。
还可以修改drill.exec.memory.operator.output_batch_sizeDrill 1.13中引入的选项。该drill.exec.memory.operator.output_batch_size选项限制了Flatten,Merge Join和External Sort运算符分配给外发批次的内存量。限制分配给外发批次的内存可以提高并发性,并防止查询因内存不足错误而失败。
传出批处理的平均行大小(根据传入的批处理大小计算)确定了可放入该批处理的可用内存的行数。如果查询因内存错误而失败,请减小该drill.exec.memory.operator.output_batch_size选项的值以减小输出批处理大小。
默认值为16777216(16 MB)。允许的最大值是536870912(512 MB)。输入以字节为单位的值。
注意:不建议将批大小配置为小于1 MB,因为这可能会导致性能问题
参考资料
https://drill.apache.org/docs/configuring-drill-memory/
https://drill.apache.org/docs/sort-based-and-hash-based-memory-constrained-operators/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2017-10-04 fn project Message Queues 配置
2017-10-04 fn project 数据库配置
2017-10-04 fn project 运行时配置选项
2017-10-04 fn project 试用之后的几个问题
2017-10-04 fn project faas 框架试用
2017-10-04 oracle fn project 开源faas 框架