presto内存配置
目录
- 1. presto的内存结构
- 2. 参考文献
1. presto的内存结构
下图是presto-worker
节点的内存示意图:
图片来源于互联网
可以粗略的认为presto的jvm.properties
配置文件中的jvm堆内存会被分为3份:
- 系统内存池(
SystemMemoryPool
) - 保留内存池(
ReservedMemoryPool
) - 普通内存池(
GeneralMemoryPool
)
这三者的区别:
System Pool
是用来保留给系统使用的,默认为40%的内存空间留给系统使用。Reserved Pool
和General 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。
- 在每个worker上能使用的内存=
- 其他query,
- 在每个worker上能使用的内存=
jvm堆内存
-query.max-total-memory-per-node
-memory.heap-headroom-per-node
= 70G - 45G - 21G = 4G, - 在整个presto集群上能使用的内存=4G*8=32G,感觉这里给少了。。
- 在每个worker上能使用的内存=
注:这个配置不一定合理,只是举这个例子来理解presto的内存配置。
2. 参考文献
[1] 深入理解Presto(3):Presto内存管理
[2] Presto内存调优及原理(基础篇)
[3] Presto 0.269 Documentation
presto内存配置相关推荐
- Presto内存管理源码分析
1. 内存池初始化 初始化代码在LocalMemoryManager中,启动时将内存分为3个内存池,分别是: RESERVED_POOL:预留内存池,用于执行最耗费内存资源的查询. GENERAL_P ...
- dell服务器清空系统空间,PowerEdge 服务器上的内存配置错误。
本文介绍常见内存配置错误及其解决方法. 常见错误表 128 位高级 ECC 模式处于禁用状态.对于 128 位高级 ECC,必须成对安装 DIMM.DIMM 对必须在大小和几何形状上匹配. 原因: 已 ...
- tomcat 内存配置学习总结
修改 tomcat 内存 http://www.cnblogs.com/quietwalk/archive/2012/11/05/2755199.html 在Jetty 的VM参数中设置: -Xms ...
- 手工计算YARN和MapReduce、tez内存配置设置
1.1.HDP YARN MapReduce参数调优建议 转自:https://blog.csdn.net/mnasd/article/details/81202908 1.1.1.RM的内存资源配置 ...
- 设置Hadoop的 dataNode的单个Map的内存配置
1.进入hadoop的配置目录 ,找到 环境变量的 $HADOOP_HOME cd $HADOOP_HOME 2.修改dataNode 节点的 单个map的能使用的内存配置 找到配置的文件: /opt ...
- Linux下jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案
Linux下的jetty报java.lang.OutOfMemoryError: PermGen space及Jetty内存配置调优解决方案 问题 linux的jetty下发布程序后再启动jetty服 ...
- 浅谈优化SQLServer数据库服务器内存配置的策略
引文 http://demo.nbarticle.com/view/2004/8/9/view_1827.htm 农业银行总行1998年以来正式推广了新版网络版综合业务统计信息系统,该系统是基于Win ...
- dell服务器报内存配置不正确,DELL 服务器系统提示错误解决的若干办法
<DELL 服务器系统提示错误解决的若干办法>由会员分享,可在线阅读,更多相关<DELL 服务器系统提示错误解决的若干办法(9页珍藏版)>请在人人文库网上搜索. 1.DELL ...
- Yarn简单介绍及内存配置
在这篇博客中,主要介绍了Yarn对MRv1的改进,以及Yarn简单的内存配置和Yarn的资源抽象container. 我么知道MRv1存在的主要问题是:在运行时,JobTracker既负责资源管理又负 ...
最新文章
- 一些JSON相关的函数
- 有待试用,查看是谁锁住了我的数据库
- mysql数据清洗_mysql数据库如何实现亿级数据快速清理
- alipay html5 app,H5App支付宝开发详解
- Objc基础学习记录5
- linux 基准测试_如何对Linux系统进行基准测试:3个开源基准测试工具
- Spring MVC Ajax返回中文乱码
- FPGA复位激励编写(方法一)
- 基于JAVA+Swing+MYSQL的宿舍管理系统
- 安装fitz报错_动态 - Fitz999的个人空间 - OSCHINA
- 显卡bind 驱动 linux,Linux 配置bind 服務
- Express框架中如何引用ejs模板引擎
- 响应内容类型为CSV
- 百度地图API学习之路(1)
- 2021国赛数学建模赛题与分析
- 计算机控制液压同步顶升系统,BOLTING博霆1600吨PLC控制全自动同步顶升系统(数控智能油缸同步控制系统)技术特点...
- java可视化tiff转pdf工具
- 计算机设备管理器没有WDS,hp 1136 电脑重启后 自动脱机 ,打印机服务也开起来,要把驱动删除掉,重新安装驱动才可以...
- 【Web】CSS(No.33)Css页面布局经典案例(三)《京东首页》
- 新做的网络电视播放器,欢迎试用