Presto基本概念

基本介绍

Presto是FaceBook开源的一个分布式的Sql Engine。
对标的是Impala之类的Mpp引擎。
主打的是实时分析和多数据源支持。
更详细的介绍和同类框架的对于可以参见

Druid和Kylin在美团点评的选型与实践

这个PPT总结的很好

基本抽象

Stage

Stage: unit of work that does not require shuffling

这是内部分享总结的,仔细品味一下还是很有道理的。
正常的讲,Stage就是查询的执行阶段。
一般分为四种Stage:

  • Source Stage: 从数据源读取数据
  • Fixed Stage: 进行中间的运算
  • Single Stage: 也称为Root Stage,这个是必不可少的,用于最后把数据汇总给Coordinator
  • Coordinator_Only:用于执行DDL语句等不需要进行计算的语句

Task

Task是Stage的具体分布式查询计划,由Coordinator进行划分
Task需要通过Http接口发送到具体的Node上去,然后生成对应的本地执行计划
一个Stage可以分解为多个同构的Task

Driver

Task是发送到本地的执行计划
Task被分为多种Driver去并发的执行

Operator

一个Driver内包含多个Operator
真正操作Page数据的是Operator
一个Operator代表一种操作,比如Scan->读取数据, Filter -> 过滤数据

Block和Page


Block是一张表的一个字段对应的队列
Page由Block构成,一个Page包含多个Block,多个Block横切为一行。