presto内存配置

1. presto的内存结构

下图是presto-worker节点的内存示意图:
在这里插入图片描述 图片来源于互联网
可以粗略的认为presto的jvm.properties配置文件中的jvm堆内存会被分为3份:

  1. 系统内存池(SystemMemoryPool)
  2. 保留内存池(ReservedMemoryPool)
  3. 普通内存池(GeneralMemoryPool)

这三者的区别:

  • System Pool 是用来保留给系统使用的,默认为40%的内存空间留给系统使用。
  • Reserved PoolGeneral Pool 是用来分配query运行时内存的。
    其中大部分的query使用general Pool。 而最大的一个query,使用Reserved Pool, 所以Reserved Pool的空间等同于一个query在一个机器上运行使用的最大空间大小。
    General则享有除了System Pool和General Pool之外的其他内存空间。

presto的官方文档中有几个内存配置项:

  • 单个节点维度的内存配置项:

    • query.max-memory-per-node一个 query可以使用的最大内存(用户内存),这对应的就是Reserved Pool的内存。默认jvm堆内存*0.1
    • query.max-total-memory-per-node一个 query可以使用的最大内存(用户内存+系统内存,即包含系SystemMemoryPool内存),默认jvm堆内存*0.3
    • memory.heap-headroom-per-node,非查询使用的内存 。不确定是否属于SystemMemoryPool
  • presto集群维度的内存配置项:

    • query.max-memory,在presto集群中,一个query可以使用的最大内存(用户内存)。默认20G
    • query.max-total-memory,在presto集群中,一个query可以使用的最大内存(用户内存+系统内存,即包含系SystemMemoryPool内存)。默认query.max-memory*2

举个例子,presto-worker机器配置为32C128G,worker节点数为8,按如下进行分配:

  • presto的jvm堆内存分配70G,
  • query.max-memory-per-node分配40G,
  • query.max-total-memory-per-node分配45G,
  • query.max-memory分配320G,40G*8=320G,
  • query.max-total-memory分配360G,45G*8=360G,
  • memory.heap-headroom-per-node分配21G,jvm堆内存*0.3=70G*0.3=21G(假如走的默认配置)。

根据上述配置可推出,

  • 耗费内存最大的 一个 query,
    • 在每个worker上能使用的内存=query.max-total-memory-per-node=45G,
    • 在整个presto集群上能使用的内存=query.max-total-memory=360G。
  • 其他query,
    • 在每个worker上能使用的内存=jvm堆内存 - query.max-total-memory-per-node - memory.heap-headroom-per-node = 70G - 45G - 21G = 4G,
    • 在整个presto集群上能使用的内存=4G*8=32G,感觉这里给少了。。

注:这个配置不一定合理,只是举这个例子来理解presto的内存配置。

2. 参考文献

[1] 深入理解Presto(3):Presto内存管理
[2] Presto内存调优及原理(基础篇)
[3] Presto 0.269 Documentation

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值