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/

posted on 2020-10-04 11:38  荣锋亮  阅读(400)  评论(0编辑  收藏  举报

导航