java - Presto + query.max-memory-per-node 配置
问题描述
我们没有在我们的 presto 工作人员中配置参数 -query.max-memory-per-node
从日志看来,值query.max-memory-per-node
是自动设置的
grep -r "query.max-memory-per-node" /presto/data/var/log/server.log
2019-08-08T14:25:03.840Z INFO main Bootstrap query.max-memory-per-node 4402341478.40B
我的问题
我们需要设置query.max-memory-per-node
inconfig.properties
吗?
或 , 的值query.max-memory-per-node
将由 presto 设置
但正如我们从日志中看到的,presto 只设置了- 4402341478.40B
(几个 GIGA 字节),所以这是小尺寸
当查询需要更多内存时,查询可能会崩溃
请您的意见,我们是否需要设置参数 query.max-memory-per-node
- 在config.properties
为了将更高的值设置为20-30 GIGA
参考 - https://prestodb.github.io/presto-admin/docs/current/installation/presto-configuration.html
解决方案
默认query.max-memory-per-node
值为可用堆内存的 10%。此属性的默认设置在此处设置:
IIRC 我们设置了默认值,因此您可以在集群中运行一些大型查询。仅从这个值并不清楚确切的数字。如果您查看上面链接的文件中的配置,您会看到系统首先为“未计入的内存分配”保留 30% 的堆,因为 Presto 不会跟踪所有分配。那么这只是对“用户”内存的限制,这是由查询作者控制的内存,query.max-memory-per-node
例如哈希表。此值不包括 Presto 自动管理的输入和输出缓冲区。group by
join
将所有这些放在一起,我希望使用默认值可以在代码上同时运行 3-5 个大型查询。
至于你想如何设置这些,这真的取决于你的工作量。如果您希望有大量混合工作负载,则默认值可能适合您。如果您希望能够将整个集群专用于单个工作人员,您可以将值增加到接近堆大小(确保为未跟踪的分配留出空间)。
推荐阅读
- java - Spring boot 控制器调用不支持内容类型“application/json;charset=UTF-8”
- asp.net-core - (以编程方式)将 .net 核心应用程序自行安装为 Windows 服务
- modelica - 突然输入如何影响 Modelica 中的模拟
- compiler-errors - 点子计算器意外结局编辑
- mysql - 使用分隔符在 sql 中的集合中检索数据
- cordova - 使用“离子科尔多瓦构建浏览器”构建后,我可以摆脱浏览器询问权限吗?
- github - PyCharm 请求 GitHub 登录
- session - 在 AEM 中关闭资源解析器对象后会话已关闭
- opengl - glOrtho 的问题:曲线从场景中消失
- java - 即使将 vorbisspi 添加到类路径后,音频文件格式仍不受支持