首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Presto配置

Presto配置
EN

Stack Overflow用户
提问于 2013-11-18 09:35:43
回答 3查看 4.2K关注 0票数 2

当我设置一个Presto集群并尝试进行一些性能调优时,我想知道是否有更全面的Presto配置指南,例如,我如何控制Presto工人可以使用多少CPU核心。如果我在一台服务器上启动多个presto工作进程(在这种情况下,我不需要专用服务器来运行协调程序),这是不是很好的做法?

此外,我不太理解task.max-memory参数。presto worker会为一个查询启动多个任务吗?如果是,也许我可以结合使用task.max-memory和-Xmx JVM参数来控制并行度?

提前谢谢。

EN

回答 3

Stack Overflow用户

发布于 2013-11-18 15:02:48

Presto是一个多线程的Java程序,在处理查询时会努力使用所有可用的CPU资源(假设输入表足够大以保证这种并行性)。您可以使用cgroup、CPU亲和性等在操作系统级别人为地限制Presto使用的CPU资源量。

在一台机器上启动多个Presto工作进程没有任何理由或好处。您不应该这样做,因为它们将不必要地相互竞争资源,并且可能比单个进程的性能更差。

我们在具有50+机器的部署中使用专用协调器,因为我们发现让协调器处理查询会在它执行查询协调工作时减慢它的速度,这对整体查询性能有负面影响。对于小型集群,将一台机器专门用于协调可能是对资源的浪费。您需要使用自己的集群设置和工作负载运行一些实验,以确定哪种方式最适合您的环境。

您可以让单个Presto进程同时充当协调器和工作进程,这对于小型集群或测试目的非常有用。为此,请将以下内容添加到etc/config.properties文件:

代码语言:javascript
复制
coordinator=true
node-scheduler.include-coordinator=true

您在与工作进程共享的机器上启动专用协调器进程的想法很有趣。例如,在具有16个处理器的计算机上,您可以使用cgroups或CPU关联将2个核心专用于协调器进程,并将工作进程限制为14个核心。我们从未尝试过这一点,但对于小型集群来说,这可能是一个很好的选择。

任务是在工作进程上运行的查询计划中的阶段( CLI在查询运行时显示阶段列表)。对于像SELECT COUNT(*) FROM t这样的查询,在执行表扫描和部分聚合的每个工作上将有一个任务,在单个工作进程上将有另一个任务用于最终聚合。具有联接、子查询等的更复杂的查询可能会导致单个查询的每个工作节点上都有多个任务。

票数 13
EN

Stack Overflow用户

发布于 2016-11-10 01:27:11

-Xmx必须大于task.max-memory,或者至少相等。否则,您可能会看到OOM问题,就像我以前经历过的那样。此外,自Presto-0.113以来,他们已经改变了Presto管理查询内存的方式和相应的配置。请访问此链接:https://prestodb.io/docs/current/installation/deployment.html

票数 0
EN

Stack Overflow用户

发布于 2017-12-10 03:23:57

对于您提出的关于“Presto worker可以使用多个CPU核心”的问题,我认为这是由参数task.concurrency控制的,该参数缺省为16

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20038642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档