Apache Doris 在小米统一 OLAP 和湖仓一体的实践

简介: 小米早在 2019 年便引入 Apache Doris 作为 OLAP 分析型数据库之一,经过五年的技术沉淀,已形成以 Doris 为核心的分析体系,并基于 2.1 版本异步物化视图、3.0 版本湖仓一体与存算分离等核心能力优化数据架构。本文将详细介绍小米数据中台基于 Apache Doris 3.0 的查询链路优化、性能提升、资源管理、自动化运维、可观测等一系列应用实践。

小米早在 2019 年便引入 Apache Doris 作为 OLAP 分析型数据库之一,经过五年的技术沉淀,已形成以 Doris 为核心的分析体系,并基于 2.1 版本异步物化视图、3.0 版本湖仓一体与存算分离等核心能力优化数据架构。本文将详细介绍小米数据中台基于 Apache Doris 3.0 的查询链路优化、性能提升、资源管理、自动化运维、可观测等一系列应用实践。

小米集团成立于 2010 年,是一家以智能手机、智能硬件和 IoT 平台为核心的全球领先科技企业,业务遍及全球 100 多个国家和地区。小米构建了全球最大的消费类 IoT 物联网平台,同时持续推进“手机×AIoT”战略。旗下产品涵盖智能手机、电视、笔记本、可穿戴设备及生态链智能产品,并投资孵化众多智能科技企业。

Apache Doris 在小米内部应用广泛,业务涵盖汽车、手机领域(包括手机系统应用与硬件制造)、互联网、线上线下销售与服务、底层平台以及新业务等多个领域,支撑着多样化的数据分析需求。目前,Doris 集群数量超过 40 个,管理数据规模数 PB,日均查询量达到 5000 万次,资源规模在近一年内增长约 80%,展现出快速发展的态势。

Doris 对小米业务线的支持.PNG

小米数据中台 OLAP 发展与挑战

01 架构演变历程

早期小米技术栈复杂多样,数据湖体系与 OLAP 引擎众多。自 2019 年在小米内部投入应用以来,Apache Doris 逐渐从中脱颖而出,发展成为小米数据架构的核心引擎。

一方面,Apache Doris 整合了内部复杂的 OLAP 分析体系,统一承载起原本由多系统分散提供的查询能力;另一方面,Doris 凭借出色的查询性能与良好的生态兼容,配合 Trino、Spark、Iceberg、Paimon 等完成了从外仓到湖仓一体架构的关键升级。

架构演变历程.png

2022 年起,Doris 在小米内部已形成了较为成熟的应用体系:依托内部发布平台,在物理机上实现集群的自动化部署与运维;同时接入内部监控体系,全面保障 Doris 集群的可观测性与稳定性。

2025 年,我们正式引入了湖仓一体与存算分离能力成熟的 Doris 3.0 稳定版本,与 2.1 版本并行运行,并针对 Doris 3.0 在管理层面进行了重大调整:引入集群编排系统,并基于 Doris Manager 自主开发了集群管理系统,提供更全面、标准化的运维与可观测性方案。

架构演变历程-1.PNG

02 外仓面临的挑战

小米早期 OLAP 体系中,离线数仓视为“内仓”,而 OLAP 服务则归为“外仓”,内外仓的数据流动依赖 Flink 或 Spark 等数据集成工具。团队主要负责 Doris 集群的部署与日常运维,在此过程中,我们遇到了诸多来自用户和自身的痛点问题,下面将结合业务场景介绍。

跨系统数据集成

数据通过 Flink 或 Spark 从离线的内仓抽取至 Doris,形成跨系统数据流动。这种模式带来一系列挑战:

  • 数据冗余:同一份数据在多个系统中存储,增加成本;
  • 口径不一致:不同系统处理逻辑差异导致结果偏差;
  • 排查困难:当 BI 看板数据出现差异时,需跨多个系统定位问题;
  • 开发负担重:业务方需自行维护 ETL 链路和多套查询接口。

以广告业务为例,其数据链路涉及多个存储系统(如 Iceberg、Druid)和同步任务,分析师需根据查询粒度选择不同系统,心智负担显著。对开发侧而言,需针对不同数据链路进行定制化开发,同时在多个系统上重复建设数据看板,导致开发工作重复、周期长,整体投入成本较高。

跨系统数据集成.PNG

存算一体架构局限

1、高可用容灾

2023 年海外机房火灾事件暴露了存算一体架构的脆弱性,虽然数据最终恢复,但也促使团队重新审视数据高可用策略。针对 Doris 2.x 的高可用方案,团队曾评估两种路径:

  • 主从复制(CCR):依赖较新版本支持,缺乏生产验证,主备切换复杂,客户端需双连,恢复时间长;

高可用容灾.PNG

  • 跨可用区副本分布:通过 Resource Group 将副本分散至不同机房,虽可避免单点故障,但跨机房读写带来性能损耗。

高可用容灾-1.png

最终采用后者作为临时方案,但仍未根本解决成本与可用性之间的矛盾。

2、资源利用率低

物理机部署模式下,构建一个高可用 Doris 集群需要 3 FE + 3 BE,对于中小规模业务而言,此配置远超实际需求,导致资源浪费严重。若为每个小业务独立建集群,将导致集群数量激增,运维压力剧增;若采用共享集群,则面临资源争抢、隔离困难、计费模糊等问题。

直到 Apache Doris 3.0 发布后引入存算分离版本,高可用容灾与资源弹性问题得到解决,下个章节将详细展开介绍。

资源利用率低.png

集群运维效率低

原有基于物理机的手动部署流程,从申请资源到集群上线通常耗时一周以上。面对快速增长的业务需求,该模式已无法满足敏捷交付要求。

Apache Doris 3.0 应用实践与突破

基于上述挑战,Doris 2.0 及早期版本在湖仓一体、存算分离、集群自动化运维等方面仍有不足,而 3.0 存算分离版本带来了诸多升级,经过一段时间的验证,团队规划出 3.0 版本与早期版本并行的升级架构,并在 3.0 版本的基础上对架构设计与使用模式进行了显著优化。

01 Doris 3.0 核心优势

首先是 3.0 存算分离的部署模式,其主要依赖计算组进行资源隔离通过将计算层与存储层解耦,BE 节点实现无状态化,依托底层 Kubernetes 支持,可以实现快速弹性伸缩以满足不同体量用户的需求。

同时,Doris 原生支持湖仓查询能力,在存算分离模式下,能够直接访问外部数据湖,有效打通数据孤岛。这一特性不仅显著简化了传统数据链路,也减少了因多层复制带来的数据冗余,真正推动湖仓一体架构的落地实践。

基于此,数据开发平台的整体架构发生变化:Doris 不再局限于传统“外仓”的角色,而是向上演进为统一的查询引擎层,与底层 Iceberg、Paimon 等湖仓格式解耦,直接进行联邦查询,同时利用自身的数据缓存、物化视图等能力对热点数据进行加速,兼顾灵活性与高性能。

Doris 3.0 核心优势.png

Doris vs Trino 湖仓分析能力对比:全面领先

在 TPC-DS 1TB 标准测试中,Doris 对比 Trino 在整体查询性能上展现出全面领先的优势。无论是复杂多表关联、聚合分析,还是高并发场景下的响应效率,Doris 均表现出更优的执行速度和资源利用率,平均查询耗时明显更低,尤其适用于对查询性能要求较高的实时分析场景。

  • TPC-DS 1T 测试:Doris 对比 Trino 全面领先

Doris vs Trino 湖仓分析能力对比.png

在小米内部的数据查询场景,涵盖多表关联、聚合计算、过滤下推等常见操作的实际业务查询中,Doris 对比 Trino 的数据湖查询效率高 3~5 倍

  • 内部数据查询场景:Doris 对比 Trino 数据湖查询效率高 3~5 倍

Doris vs Trino 湖仓分析能力对比-1.png

02 统一查询网关

  • 统一认证鉴权:在连接层,将不同引擎的权限和认证体系统一提升到网关层,用户通过网关统一查询,无需担心引擎权限问题。
  • SQL 改写:利用 Doris 的 SQL 改写能力,将其提升到网关层,帮助用户在不同引擎间平滑切换,避免因 SQL 语句不兼容导致出错。
  • 连接协议优化:采用 Arrow Flight SQL 传输协议和 ADBC 连接方式,传输效率较 JDBC 高 10 倍以上,真实业务场景查询耗时减少 36%,Kyuubi 实例内存用量减少 50%,代理层服务的管理效率显著提升。

统一查询网关.png

03 数据链路:物化视图上卷代替导入任务

以广告业务场景为例,面对分钟级明细数据聚合查询较慢的问题,常见方案是将原始明细数据聚合成小时级数据,定期导入 Doris 以提升查询性能。这一过程需开发和维护复杂的调度任务,运维成本较高。

自 Doris 2.1 版本引入异步物化视图能力后,只需在 Doris 中声明物化视图定义,系统即可自动完成从外部数据湖(如 Iceberg)增量同步、数据聚合、更新调度等全过程,无需额外开发 ETL 链路,也无需关注底层执行细节,显著降低了开发与运维负担。同时,Doris 支持物化视图改写能力,用户仍可使用原有 SQL 查询原始表,系统会自动识别并将其透明改写为对应的物化视图,实现查询加速。目前该功能基于增量方式实现,主要支持仅追加场景,更新场景仍处于研发状态。

数据链路:物化视图上卷代替导入任务.png

异步物化视图能力的建表语句示例如下:

CREATE MATERIALIZED VIEW mv
BUILD DEFERRED
REFRESH INCREMENTAL
ON COMMIT
PARTITION BY (date)
DISTRIBUTED BY RANDOM BUCKETS 4
PROPERTIES ('replication_num' = '3') 
AS
SELECT 
  date, 
  k1+1 AS k2, 
  SUM(a1) AS a2
FROM
  paimon.data.table
WHERE date >= 20250222
GROUP BY 1, 2;

04 自助化、精细化的资源管理

为了优化资源管理与运维流程,我们自研了精细的 Doris Manager 集群管理服务,将用户的运维需求转化为自助操作,依托社区开源的 Doris Operator 在 Kubernetes 平台自动完成资源申请与释放,实现快速的集群变更。用户直接通过平台提交资源申请,无需等待平台申请机器、初始化、发布和上线等步骤,以集群扩容为例,交付周期从原先的约一周大幅缩短至分钟级,显著提升了运维响应速度与效率。

同时,通过 Doris Manager 集群自动化注册与发现能力,新集群创建的同时向元数据中心注册 Catalog,可自动被查询网关识别并接入统一访问入口,用户无需额外配置即可通过网关发起 Doris 查询,进一步优化了使用体验。

接入 Kubernetes 后,资源调度更加精细化,最小调度粒度从物理机级别转变为机器核心、内存大小、磁盘容量等维度,能够根据不同业务需求灵活调配资源,提高资源利用率,满足多样化的业务场景。

自助化、精细化的资源管理.png

05 更完善的数据采集与可观测性

在集群可观测性方面,基于 Kubernetes 的标准化组件,参照 OpenTelemetry 的规范对 Doris 的监控体系进行全面升级。通过 Prometheus 的 ServiceMonitor 机制采集 Doris 各组件的性能指标,为用户提供全面、细粒度性能监控数据。

在日志采集方面,采用自研的 Hera(log tail 组件)实现高效采集,同时,借鉴社区的日志检索场景实践,将 Doris 作为 OpenTelemetry 的存储后端:Doris 自身运行产生的日志经采集后,最终回流并存储至 Doris 内部表中,形成“日志产生-采集-存储-查询”的闭环。

更完善的数据采集与可观测性.png

与之前仅支持基础指标采集的 Falcon 体系相比,Hera 架构覆盖了审计日志、监控指标、运行日志、Profiling 结果以及正在完善的分布式 tracing 信息,提供更加全面的综合诊断能力。

更完善的数据采集与可观测性-1.png

后续规划

感谢 Doris 社区始终保持高效的版本迭代节奏与稳定性打磨,后续我们将基于以下几方面展开工作:

  • 完成 Doris 版本收敛工作:将核心功能并线至 2.1 和 3.0 版本,并统一工具链版本依赖以减少环境差异,最终实现开发迭代效率的显著提升,为后续功能迭代奠定高效基础。
  • 围绕湖仓一体能力进行深度优化:重点提升湖仓支持的完整性与稳定性,推动 Doris 存算分离架构的大规模落地,同时完善增量计算能力的覆盖范围,以满足复杂场景下的实时数据处理需求。
  • 拓展新场景与 AI 融合方向:孵化日志、Tracing 等数据存储能力,通过 AI for Doris 提升运维管理效率,并探索 Doris for AI 的反向赋能能力,构建数据平台与智能技术的双向协同生态。
目录
相关文章
|
1天前
|
云安全 人工智能 自然语言处理
|
6天前
|
搜索推荐 编译器 Linux
一个可用于企业开发及通用跨平台的Makefile文件
一款适用于企业级开发的通用跨平台Makefile,支持C/C++混合编译、多目标输出(可执行文件、静态/动态库)、Release/Debug版本管理。配置简洁,仅需修改带`MF_CONFIGURE_`前缀的变量,支持脚本化配置与子Makefile管理,具备完善日志、错误提示和跨平台兼容性,附详细文档与示例,便于学习与集成。
314 116
|
8天前
|
数据采集 人工智能 自然语言处理
Meta SAM3开源:让图像分割,听懂你的话
Meta发布并开源SAM 3,首个支持文本或视觉提示的统一图像视频分割模型,可精准分割“红色条纹伞”等开放词汇概念,覆盖400万独特概念,性能达人类水平75%–80%,推动视觉分割新突破。
604 53
Meta SAM3开源:让图像分割,听懂你的话
|
21天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
人工智能 Java API
Java 正式进入 Agentic AI 时代:Spring AI Alibaba 1.1 发布背后的技术演进
Spring AI Alibaba 1.1 正式发布,提供极简方式构建企业级AI智能体。基于ReactAgent核心,支持多智能体协作、上下文工程与生产级管控,助力开发者快速打造可靠、可扩展的智能应用。
|
4天前
|
弹性计算 人工智能 Cloud Native
阿里云无门槛和有门槛优惠券解析:学生券,满减券,补贴券等优惠券领取与使用介绍
为了回馈用户与助力更多用户节省上云成本,阿里云会经常推出各种优惠券相关的活动,包括无门槛优惠券和有门槛优惠券。本文将详细介绍阿里云无门槛优惠券的领取与使用方式,同时也会概述几种常见的有门槛优惠券,帮助用户更好地利用这些优惠,降低云服务的成本。
269 132
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
AgentEvolver:让智能体系统学会「自我进化」
AgentEvolver 是一个自进化智能体系统,通过自我任务生成、经验导航与反思归因三大机制,推动AI从“被动执行”迈向“主动学习”。它显著提升强化学习效率,在更少参数下实现更强性能,助力智能体持续自我迭代。开源地址:https://github.com/modelscope/AgentEvolver
418 29
|
15天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
727 223