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

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

2025-06-27 10:12:40作者:彭桢灵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 机制为多租户场景下的资源隔离提供了灵活高效的解决方案。通过合理配置,可以在资源利用率和业务隔离性之间取得平衡,满足不同业务场景的需求。理解其工作原理和配置要点,将帮助管理员更好地优化集群性能和服务质量。

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

最新内容推荐

项目优选

收起
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
176
261
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
860
511
ShopXO开源商城ShopXO开源商城
🔥🔥🔥ShopXO企业级免费开源商城系统,可视化DIY拖拽装修、包含PC、H5、多端小程序(微信+支付宝+百度+头条&抖音+QQ+快手)、APP、多仓库、多商户、多门店、IM客服、进销存,遵循MIT开源协议发布、基于ThinkPHP8框架研发
JavaScript
93
15
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
129
182
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
259
300
kernelkernel
deepin linux kernel
C
22
5
cherry-studiocherry-studio
🍒 Cherry Studio 是一款支持多个 LLM 提供商的桌面客户端
TypeScript
596
57
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.07 K
0
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
398
371
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
332
1.08 K