Presto内存及优化

1.1 内存调优参数

query.max-memory:表示单个查询在分布在所有相关节点上能用的内存之和的最大值。
query.max-memory-per-node:表示单个查询在单个节点上用户内存能用的最大值。
query.max-total-memory-per-node:表示单个查询在单个节点上用户内存能用的最大值和系统内存量。其中系统内存是读取器、写入器和网络缓冲区等在执行期间使用的内存。
memory.heap-headroom-per-node:这个内存主要是第三方库的内存分配,无法被统计跟踪,默认值是-Xmx * 0.3。

注意点:

  1. query.max-memory-per-node小于query.max-total-memory-per-node。
  2. query.max-total-memory-per-node 与memory.heap-headroom-per-node 之和必须小于 jvm max memory 也就是jvm.config 中配置的-Xmx。

1.2 内存调优参数

操作场景:Presto由于是完全基于内存的计算,经常出现OOM,需要调整内存。

修改参数

image.png

1.3 常见OOM报错

1.3.1 Query exceeded per-node total memory limit of xx

            适当增加query.max-total-memory-per-node。

1.3.2 Query exceeded distributed user memory limit of xx

            适当增加query.max-memory。

1.3.3 Could not communicate with the remote task. The node may have crashed or be under too much load

            内存不够,导致节点crash,可以查看/var/log/message。

1.4 作业并行度

操作场景:调整线程数增大task的并发以提高效率。

修改参数

image.png

1.5 元数据缓存

操作场景:Presto支持Hive connector,元数据存储在Hive metastore中,调整元数据缓存的相关参数可以提高访问元数据的效率。

修改参数

image.png

1.6 Hash优化

操作场景:针对Hash场景的优化。

修改参数

image.png

1.7 优化OBS相关参数

操作场景:Presto支持on OBS,读写OBS过程中可以调整OBS客户端参数来提交读写效率。

修改参数

image.png

你可能感兴趣的:(Presto内存及优化)