Dav*_*ips 10
Presto是一个多线程Java程序,在处理查询时很难使用所有可用的CPU资源(假设输入表足够大以保证这种并行性).您可以使用cgroups,CPU亲和力等人为地限制Presto在操作系统级别使用的CPU资源量.
在一台机器上启动多个Presto工作者没有任何理由或好处.你不应该这样做,因为他们将不必要地相互竞争资源,并且可能比单个过程表现更差.
我们在具有50多台计算机的部署中使用专用协调器,因为我们发现拥有协调器进程查询会在执行查询协调工作时降低速度,这会对整体查询性能产生负面影响.对于小型集群,将机器专用于协调可能是浪费资源.您需要使用自己的群集设置和工作负载运行一些实验,以确定哪种方式最适合您的环境.
您可以将单个Presto进程充当协调器和工作器,这对于小型集群或测试目的非常有用.为此,请将其添加到etc/config.properties文件中:
coordinator=true
node-scheduler.include-coordinator=true
Run Code Online (Sandbox Code Playgroud)
您在与工作进程共享的计算机上启动专用协调程序进程的想法很有意思.例如,在具有16个处理器的计算机上,您可以使用cgroups或CPU亲缘关系将2个核心专用于协调器进程,并将工作进程限制为14个核心.我们从未尝试过这个,但对于小型集群来说,它可能是一个不错的选择.
任务是在工作程序上运行的查询计划中的一个阶段(CLI在查询运行时显示阶段列表).对于类似的查询SELECT COUNT(*) FROM t,每个工作都会执行一项任务,执行表扫描和部分聚合,以及单个工作服务器上的另一个任务,用于最终聚合.具有连接,子查询等的更复杂的查询可以在每个工作节点上为单个查询生成多个任务.
| 归档时间: |
|
| 查看次数: |
3550 次 |
| 最近记录: |