Presto分布式大数据 sql 查询引擎

广告 数据  收藏
0 / 201

presto 是分布式大数据 sql 查询引擎,适用于交互式分析查询,是为了解决数仓的交互式分析和处理速度的问题

应用场景

  1. 数据平台的临时查询:进行探索性的数据分析
  2. bi 报表引擎
  3. 数据质量管理:使用 presto 进行数据质量校验
  4. 数据产品:比如 crm 数据分析,人群画像会使用 presto 进行计算

查询过程

image.png

  1. Client 发送请求给 Coordinator。
  2. SQL 通过 ANTLR 进行解析生成 AST。
  3. AST 通过元数据进行语义解析。
  4. 语义解析后的数据生成逻辑执行计划,并且通过规则进行优化。
  5. 切分逻辑执行计划为不同 Stage,并调度 Worker 节点去生成 Task。
  6. Task 生成相应物理执行计划。
  7. 调度完后根据调度结果 Coordinator 将 Stage 串联起来。
  8. Worker 执行相应的物理执行计划。
  9. Client 不断地向 Coordinator 拉取查询结果,Coordinator 从最终汇聚输出的 Worker 节点拉取查询结果。

高效

  1. Pipeline, 全内存计算。
  2. SQL 查询计划规则优化。
  3. 动态代码生成技术。
  4. 数据调度本地化,注重内存开销效率,优化数据结构,Cache,非精确查询等其它技术。