在 5 个节点集群上运行 Presto 大扫描查询,看起来只有一个节点是查询协调器,并通过网络从 5 个 hdfs 节点读取数据。
所有 presto 进程都在数据节点上运行。
有没有办法让 5 个节点使用快捷本地读取从 hdfs 读取数据?
presto 节点是否进行任何预聚合?
您的问题不清楚您是否已将 Presto 工作程序安装在与 HDFS 数据节点相同的机器上。如果您还没有,安装说明将帮助您执行此操作。
在所有数据节点上都有 Presto 工作器后,Presto 应该在从本地 DFS 节点访问数据时自动执行本地读取。Presto 更喜欢将工作安排在与 DFS 节点相同的机器上,但如果该机器过载,它会将工作安排在另一台机器上,因此您通常会获得一些远程读取。大多数读取应该是本地的,您可以使用协调器上的 com.facebook.presto.execution:name=NodeScheduler mbean 验证此分布。
Presto 总是在叶子工作节点上执行部分聚合。
如果您在所有节点上都安装了 presto,并且希望 presto worker 处理本地条带,则需要将“hive.force-local-scheduling”会话标志设置为 true。在我看到的 presto 版本(0.153)中,默认情况下这是错误的。
在以下位置查看更多详细信息: https ://github.com/prestodb/presto/issues/894