当前位置: 首页 > news >正文

【Doris基础】Apache Doris中的Fragment概念详解

目录

1.1 什么是Fragment

1.2 Fragment与MPP架构

2 Fragment的执行模型

2.1 Fragment的组成结构

2.2 Fragment的执行流程

3 Fragment的类型与拓扑结构

3.1 Fragment的三种基本类型

3.2 Fragment间的数据交换方式

4 Fragment的并行执行机制

4.1 实例化模型

4.2 数据本地化执行

4.3 流水线执行

5 Fragment的优化策略

5.1 分区裁剪(Partition Pruning)

5.2 列裁剪(Column Pruning)

5.3 谓词下推(Predicate Pushdown)

6 Fragment的调度过程

6.1 调度流程

6.2 调度策略

7 Fragment的监控与调优

7.1 关键监控指标

7.2 性能调优方法

8 总结


1.1 什么是Fragment

在Apache Doris的分布式查询执行模型中, Fragment(片段)是查询执行计划的基本调度单位。一个完整的查询执行计划会被拆分为多个Fragment,这些Fragment按照特定的拓扑结构组织起来,共同完成查询的执行。
核心特性
  • 并行执行单元:每个Fragment可以包含多个并行的执行实例
  • 数据流边界:Fragment之间通过数据流进行通信
  • 调度粒度:Doris调度器以Fragment为单位进行任务调度

1.2 Fragment与MPP架构

Doris采用MPP(Massively Parallel Processing)架构,Fragment正是实现并行计算的关键抽象:

2 Fragment的执行模型

2.1 Fragment的组成结构

一个典型的Fragment包含以下组件:
  • PlanNode树:由多个算子组成的执行逻辑
  • 数据源:扫描节点或接收节点
  • 数据汇:发送节点或输出节点
  • 执行参数:并行度、内存限制等

2.2 Fragment的执行流程

  • Doris中Fragment的执行遵循以下生命周期:
阶段说明
  • 初始化:Coordinator创建Fragment并设置执行参数
  • 实例分发:将Fragment实例分配到多个BE节点
  • 执行准备:BE节点准备执行所需的资源
  • 开始执行:并行执行Fragment实例
  • 数据交换:Fragment间通过Exchange节点传输数据
  • 状态汇报:BE节点向Coordinator汇报执行状态
  • 结束清理:释放Fragment占用的资源

3 Fragment的类型与拓扑结构

3.1 Fragment的三种基本类型

  • 扫描Fragment(Scan Fragment)
特点
  • 包含表的扫描操作
  • 通常位于执行计划的最底层
  • 每个分片对应一个实例
  • 计算Fragment(Compute Fragment)
特点
  • 不直接访问存储
  • 接收上游数据并进行计算
  • 可能包含复杂的计算逻辑
  • 汇聚Fragment(Sink Fragment)
特点
  • 通常位于执行计划最顶层
  • 负责最终结果的汇聚和输出
  • 只有一个执行实例

3.2 Fragment间的数据交换方式

  • 广播(Broadcast)
  • 分区(Partition)
  • 单播(Singleton)

4 Fragment的并行执行机制

4.1 实例化模型

  • 每个Fragment会在多个BE节点上实例化为多个执行实例:
关键参数
  • parallel_fragment_exec_instance_num:控制每个BE上的实例数
  • dop:Degree of Parallelism,并行度

4.2 数据本地化执行

  • Doris会尽量将Fragment实例调度到数据所在的BE节点:

4.3 流水线执行

  • Fragment实例内部采用流水线执行模型:

5 Fragment的优化策略

5.1 分区裁剪(Partition Pruning)

效果:只扫描相关的分区Fragment

5.2 列裁剪(Column Pruning)

效果:减少Fragment间传输的数据量

5.3 谓词下推(Predicate Pushdown)

效果:尽早过滤数据,减少计算量

6 Fragment的调度过程

6.1 调度流程

6.2 调度策略

  • 数据本地化优先:优先选择数据所在的BE节点
  • 负载均衡:考虑各BE的当前负载
  • 资源限制:检查内存、CPU等资源限制

7 Fragment的监控与调优

7.1 关键监控指标

指标名称

说明

fragment_count

Fragment数量

instance_count

实例总数

fragment_duration

Fragment执行耗时

exchange_data_size

数据交换量

7.2 性能调优方法

  • 调整并行度
SET parallel_fragment_exec_instance_num = 4;
  • 优化内存限制
SET exec_mem_limit = 8589934592; -- 8GB
  • 控制实例数
SET parallel_pipeline_task_num = 16;

8 总结

Fragment设计总结
  • 分布式执行的基础单元:实现了查询的分布式并行执行
  • 灵活的拓扑结构:支持复杂查询的高效执行
  • 资源隔离的边界:便于资源控制和调度
通过深入理解Fragment的概念和执行机制,可以更好地优化Doris查询性能,构建高效的实时数据分析系统。

相关文章:

  • Agno:使用简单代码构建AI智能体
  • JS语法笔记
  • 风云二号G星:我国气象监测的“天眼”
  • 小巧实用,Windows文件夹着色软件推荐
  • MySQL强化关键_019_索引优化
  • [Linux] MySQL源码编译安装
  • MySQL计算精度计算加减乘除取模方式和方法总计
  • 2025年06月03日Github流行趋势
  • 【散刷】二叉树基础OJ题(二)
  • 【学习记录】深入解析 AI 交互中的五大核心概念:Prompt、Agent、MCP、Function Calling 与 Tools
  • Linux: network : switch:hp5500
  • 电阻电容的选型
  • 低谷才是出成绩
  • JVM—垃圾收集算法和HotSpot算法实现细节
  • Go语言学习-->第一个go程序--hello world!
  • 深入解析ReactJS中JSX的底层工作原理
  • 鸿蒙简易版影视APP案例实战
  • 代码随想录算法训练营第60期第五十六天打卡
  • Linux 环境下高效视频切帧的实用指南
  • AXURE安装+汉化-Windows
  • 石家庄pc端网站开发/做网页多少钱一个页面
  • 嘉兴外贸网站制作/郑州网络营销公司哪家好
  • wordpress静态博客主题/aso优化工具
  • 中国建设建行网站/宁波好的seo外包公司
  • 贵阳网站建设电话/输入关键词搜索
  • dw建设网站视频教程/app代理推广平台