作者 | 士心先生
来源 | 程序员的读书故事 (公众号:pg_reading)
- Presto协调器负责接收用户SQL查询、解析查询语句、规划查询执行并管理工作节点。协调器是Presto集群的大脑,所有客户端应用程序都会连接它。用户可以通过Presto CLI 、使用JDBC或ODBC驱动的应用程序以及其他语言下可用的客户端库来与协调器交互。
- 一个集群中至少包含一个协调器,可能包含一个或多个工作节点。协调器会跟踪每个工作节点的动态,并协调查询任务的执行。对于一条查询,协调器将创建一个包含多个Stage(阶段)的逻辑模型。
- 一旦接收到一条SQL语句,协调器就负责解析、分析、优化和调度查询任务在Presto工作节点上的执行。查询语句被翻译成一系列相连的任务task,这些任务被分发到各个工作节点上执行。
- 在工作节点处理数据的同时,协调器会将结果抽取出来放到输出缓冲器中,并将缓冲区的内容暴露给客户端。
- 一旦客户端读完输出缓冲器的内容,协调器就会代表客户端向工作节点请求更多的数据。另外,工作节点也在不断地与数据源交互并从中读取数据。最终,客户端不断地请求数据,工作节点则不断地从数据源读取数据并提供给客户端,直到查询执行结束。