内容实际来自官方架构介绍,图以前也在博客中放过,现在进行说明下
参考执行图
阶段说明
参考上图,dremio将执行分为可4个阶段
- 客户端通过jdbc,odbc,rest 提交查询到协调节点
- 计划阶段
此阶段可以细分3步
a. 协调节点解析查询为dremio的通用关系模型
b. 协调节点基于数据源的统计信息,生成查询执行计划,以及源的功能能力
c. 协调节点进行查询计划的重写(会使用到数据反射,考虑的东西比较多,比如排序,分区,数据分布,以及数据源的能力) - 执行
此阶段可以细分3步
a. 引擎从数据源并行的读取数据为arrow buffers,数据通常直接来自数据湖存储,有时也可能来自数据反射,或者外部数据源
当读取外部数据源的时候,引擎提交的是原生查询(jdbc ,mongo。。。)
b. 引擎执行查询的查询计划
c. 一个引擎合并来自一个或者多个引擎的数据,并通过stream 的模式到协调节点(pipeline) - 客户端从协调节点接受数据
说明
所有的数据操作都在执行节点(实际是指sql 数据类的操作),dremio 的执行实际上与大部分分布式查询引擎的流程类似(trino 等),只是dremio 又提供了不少其他比较方便的能力可以加速数据的使用
参考资料
https://www.dremio.com/downloads/DremioArchitectureGuide.pdf
https://www.dremio.com/blog/dremio-cloud-under-the-hood/
https://docs.dremio.com/24.2.x/help-support/lakehouse-arch/