首页
/ Apache Doris 工作负载管理:深入解析 Workload Group 机制

Apache Doris 工作负载管理:深入解析 Workload Group 机制

2025-06-27 12:57:23作者:彭桢灵Jeremy

概述

在现代大数据分析场景中,资源隔离是保证系统稳定性和多租户服务质量的关键技术。Apache Doris 作为一款高性能的 MPP 分析型数据库,通过 Workload Group 机制实现了进程内资源隔离,为不同业务负载提供差异化的资源保障。

核心概念

Workload Group 是什么

Workload Group 是 Apache Doris 实现的一种进程内资源隔离机制,它通过精细划分 BE 进程内的 CPU、内存和 IO 资源,为不同工作负载提供资源保障。其核心架构如下图所示:

Workload Group 架构图

主要特性

  1. CPU 资源管理:支持软限制(权重分配)和硬限制(绝对上限)
  2. 内存资源管理:支持软限制(可超用)和硬限制(严格上限)
  3. IO 资源管理:控制本地和远程文件读取产生的 IO

版本演进与兼容性

  • Doris 2.0:首次引入 Workload Group 功能,此时不依赖 CGroup
  • Doris 2.1:增强功能,开始依赖 CGroup 实现更精确的资源控制

升级注意事项

  • 1.2 升级到 2.0:建议全集群升级完成后再启用 Workload Group
  • 2.0 升级到 2.1:必须先配置 CGroup 环境

环境配置详解

CGroup 环境搭建

Workload Group 的 CPU 管理依赖 CGroup,配置步骤如下:

  1. 检查 CGroup 版本

    cat /proc/filesystems | grep cgroup
    
  2. 确认活跃版本

    • V1:检查 /sys/fs/cgroup/cpu/ 是否存在
    • V2:检查 /sys/fs/cgroup/cgroup.controllers 是否存在
  3. 创建专用目录

    # V1
    mkdir /sys/fs/cgroup/cpu/doris
    
    # V2
    mkdir /sys/fs/cgroup/doris
    
  4. 设置权限

    chmod 770 /path/to/doris
    chown -R doris:doris /path/to/doris
    
  5. V2 特殊配置

    chmod a+w /sys/fs/cgroup/cgroup.procs
    echo +cpu > ../cgroup.subtree_control
    
  6. 修改 BE 配置

    # V1
    doris_cgroup_cpu_path = /sys/fs/cgroup/cpu/doris
    
    # V2
    doris_cgroup_cpu_path = /sys/fs/cgroup/doris
    
  7. 验证配置:重启 BE 后检查日志中是否有 'add thread xxx to group' 信息

容器化部署注意事项

在容器环境中使用 Workload Group 需要:

  1. 容器以特权模式运行
  2. CPU 配额基于容器分配的 CPU 资源计算
  3. 内存和 IO 管理与物理机部署无差异

工作负载组管理

创建示例

CREATE WORKLOAD GROUP IF NOT EXISTS g1
PROPERTIES (
    "cpu_share" = "1024",
    "memory_limit" = "30%",
    "enable_memory_overcommit" = "false"
);

系统会自动创建名为 normal 的默认组,不可删除。

关键属性详解

属性 类型 默认值 说明
cpu_share 整型 -1 CPU 软限制权重,值越大获得的 CPU 时间越多
memory_limit 浮点 -1 内存限制百分比,0-100%
enable_memory_overcommit 布尔 true 是否允许内存超用
cpu_hard_limit 整型 -1 CPU 硬限制百分比(2.1+)
max_concurrency 整型 MAX_INT 最大并发查询数
max_queue_size 整型 0 查询队列最大长度
queue_timeout 整型 0 队列等待超时(ms)

最佳实践

  1. 资源规划

    • 所有组的 memory_limit 总和建议保持在 100% 以下
    • 为系统组件预留足够资源
  2. 隔离策略选择

    • 对延迟敏感业务:使用硬限制(cpu_hard_limit + enable_memory_overcommit=false)
    • 普通业务:使用软限制(cpu_share + enable_memory_overcommit=true)
  3. 监控调整

    • 定期检查各组资源使用情况
    • 根据业务变化动态调整配额

总结

Apache Doris 的 Workload Group 机制为多租户场景下的资源隔离提供了灵活高效的解决方案。通过合理配置,可以在资源利用率和业务隔离性之间取得平衡,满足不同业务场景的需求。理解其工作原理和配置要点,将帮助管理员更好地优化集群性能和服务质量。

登录后查看全文
热门项目推荐

项目优选

收起
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
152
1.97 K
kernelkernel
deepin linux kernel
C
22
6
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
426
34
communitycommunity
本项目是CANN开源社区的核心管理仓库,包含社区的治理章程、治理组织、通用操作指引及流程规范等基础信息
239
9
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
145
190
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
988
394
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
193
274
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
936
554
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Python
75
69