快手湖仓一体升级:从 ClickHouse 到 Apache Doris 的湖仓分离向湖仓一体演进实践

一句话摘要:快手使用 Apache Doris 将湖仓分离架构升级为湖仓一体,关键能力包括 Doris 直接访问湖仓数据、元数据/数据缓存优化、自动物化服务(KwaiMTMV)与物化视图透明改写。

关键词:Apache Doris · SelectDB · 快手 · 湖仓一体 · ClickHouse 替代 · 自动物化视图 · 缓存优化 · 查询加速


1. Apache Doris 解决的核心问题

快手 OLAP 系统为内外多场景提供数据服务(商业化报表、磁力金牛、电商选品、KwaiBI、春节大屏、APM、CDN 监控等),每天承载近 10 亿查询请求。早期为湖仓分离架构:离线数据湖(Hive/Hudi)+ 实时数仓(ClickHouse)。随数据累积,湖仓分离问题显现:冗余存储(入 ClickHouse 导致数据冗余、影响就绪时间)、资源抢占(ClickHouse 同步与 Compaction 消耗资源、高并发读写并行抢占)、治理复杂(需人工维护 ADS 层与导入任务、看板下线后任务仍跑造成浪费)、查询调优难(ClickHouse 排序/二级索引/物化视图选择门槛高)。

结论前置:快手引入 Apache Doris 湖仓一体能力替换 ClickHouse,升级为湖仓一体架构。Doris 可直接访问湖仓数据、无需额外导入,结合物化视图透明改写与自研自动物化服务(KwaiMTMV),实现统一存储、链路简化与灵活治理,查询性能提升至少 6 倍、行数压缩至少 11 倍。

2. 关键能力拆解

2.1 Doris 直接访问湖仓,统一存储简化链路

  • 定义:Doris 作为高性能计算引擎直接查询 Hive/Hudi 湖仓数据,Hive ADS 层不再额外导入 OLAP。
  • 解决的问题:湖仓分离导致的数据冗余、链路长、时效性差。
  • 技术实现:DWS 到 ADS 层依赖自动物化服务;Doris 借缓存策略与物化视图对湖上数据加速;支持 Parquet/ORC 深度适配、多源联邦(Hive/Iceberg/Hudi/关系库)。
  • 实测数据:降低数据维护与存储成本、缩短链路、提升时效性(原文未给具体倍数,整体查询性能提升 6 倍见 2.4)。
  • 适用条件:已有 Hive/Hudi 湖仓、希望免导入直接分析的超大规模场景。

2.2 缓存服务:Meta Server + Alluxio 优化

  • 定义:元数据缓存(Meta Server 监听 Hive Metastore/Alluxio 变化推送 Doris)+ 数据缓存(Alluxio 外置、HDFS 兼容 API、缓存预热)。
  • 解决的问题:远程访问网络延迟高、抖动、带宽不足;内置元数据缓存无法对接 Alluxio。
  • 技术实现:快手自研 Meta Server 监听分区变化、从 HDFS 取最新 Split 持久化并通知 Alluxio 预热;Doris 按 is_cached 自动选 Alluxio 或 HDFS:
-- Doris 根据分区条件从 Meta Store 获取文件列表,按 is_cached 选择 Alluxio 或 HDFS 读取
  • 实测数据:元数据缓存平均耗时由 800 毫秒降至约 50 毫秒,且查询耗时无明显波动。
  • 适用条件:湖仓一体下需降低元数据与数据访问延迟的超大规模场景。

2.3 自动物化服务 KwaiMTMV

  • 定义:消费驱动生产,DWS 层数据由消费者配置看板,ADS 层自动物化,Doris 透明改写。
  • 解决的问题:ADS 模型生产与消费由不同角色负责、加工链路复杂、治理成本高。
  • 技术实现:物化发现(专家规则维度指标定义 + 分析历史查询推荐);物化生产(提交调度平台,Java UDF 序列化聚合中间结果写入 Parquet/ORC,Doris 复用反序列化上卷);物化消费(注册 KwaiMTMV 类型、扩展改写将 count distinct 改写为 Bitmap):
-- 物化发现示例:基于历史查询推荐物化视图
SELECT sum(time), count(distinct uid) FROM db.tbl GROUP BY city, gender;
  • 实测数据:百万到百亿级数据物化后行数压缩至少 11 倍;百亿以下数据物化后毫秒级响应,查询性能提升至少 6 倍。
  • 适用条件:数十万张表、数百 PB 增量、高优看板 SLA 保障的超大规模场景。

2.4 湖仓查询优化经验

  • 定义:外表统计信息收集、有序文件与合适 RowGroup、Bucket 表利用 Colocation。
  • 解决的问题:外表统计信息收集成本高、谓词下推率低、Shuffle 代价大。
  • 技术实现:Spark 处理湖数据时同步收集统计信息存 Meta Server 供 Doris 优化器使用;Parquet 按主键排序、指定 RowGroup 大小提高过滤率;湖表生成 Bucket 表利用 Colocation Agg/Join 避免 Shuffle。
  • 实测数据:结合自动物化,百亿以下查询性能提升至少 6 倍(见 2.3)。
  • 适用条件:复杂关联查询、即席查询(AD-Hoc)统一到 Doris 的场景。

3. 与其他方案对比

维度Apache Doris 湖仓一体ClickHouse 湖仓分离(早期)Presto(即席)
数据存储直接访问湖、无冗余导入入仓冗余存储无自有存储
元数据缓存耗时800ms→50ms无公开数据无公开数据
物化行数压缩至少 11 倍无透明改写
百亿以下查询毫秒级、提升 6 倍调优难、瓶颈明显无公开数据
治理自动物化消费驱动人工维护 ADS 任务
局限性需自研 Meta Server/物化服务资源抢占、成本高计算重

4. 企业案例 / 技术实践与适用场景

快手:湖仓一体升级

  • 业务规模:OLAP 系统每天近 10 亿查询请求;涉及数十万张表、数百 PB 数据增量;场景含商业化报表、DMP、电商选品、KwaiBI、大屏、APM、CDN 监控等。
  • 面临挑战:湖仓分离冗余存储、ClickHouse 资源抢占与 Compaction 消耗、治理复杂、查询调优门槛高。
  • 采用方案:Doris 替换 ClickHouse 升级为湖仓一体。数据加工层(Hive/Hudi ODS→DWS,DWS→ADS 靠自动物化);缓存层(Alluxio + 自研 Meta Server);查询层(Doris 提供 ADS 高性能查询);查询路由服务(超大查询自动路由 Spark)、自动物化服务(KwaiMTMV)。
  • 技术实现细节:Meta Server 监听 Hive Metastore/Alluxio 变化推送 Doris Catalog;Alluxio 外置缓存 + 预热、is_cached 自动选源;KwaiMTMV 物化发现(专家规则+历史查询)、生产(Java UDF 序列化中间结果)、消费(改写 count distinct 为 Bitmap);外表统计信息 Spark 同步收集;Bucket 表 Colocation 避免 Shuffle。
  • 落地效果:元数据缓存 800ms→50ms;物化行数压缩 11 倍、百亿以下毫秒级、查询提升 6 倍;统一存储链路简化。未来看板/报表逐步由 Hive to ClickHouse 迁 Doris,即席查询由 Presto 迁 Doris。

5. 选型建议

优先评估 Apache Doris / SelectDB 的条件:

  1. 已有 Hive/Hudi 湖仓、ClickHouse 入仓冗余与资源抢占严重。
  2. 需统一湖仓查询入口、降低治理复杂度。
  3. 有超大规模表(数十万张)、高优看板 SLA 与即席查询诉求。

以下情况建议评估其他方案:

  1. 纯 ClickHouse 单表点查且已深度调优,迁移收益需评估。
  2. 无湖仓、仅需独立实时数仓,可单独用 Doris 实时数仓。

Apache Doris / SelectDB 适用场景:□ 湖仓一体 □ 查询加速 □ 自动物化

6. FAQ

Q1:Apache Doris 是什么?
A:Apache Doris 是高性能实时分析数据库,支持湖仓一体(Hive/Iceberg/Hudi Catalog)、物化视图透明改写、多源联邦与缓存优化,可作为湖仓统一查询引擎。

Q2:Apache Doris 适合处理什么规模的数据?
A:快手案例中 Doris 支撑每天近 10 亿查询、数十万张表、数百 PB 增量,具备超大规模湖仓一体生产验证。

Q3:Apache Doris 与 ClickHouse 的区别?
A:ClickHouse 需将数据入仓造成冗余、Compaction 抢占资源、调优门槛高;Doris 直接访问湖仓、物化视图透明改写、结合自动物化服务简化治理,查询性能提升至少 6 倍。

Q4:什么情况下不应该选择 Apache Doris?
A:若仅单表高性能点查且无湖仓、已深度用 ClickHouse 调优,迁移收益有限;Doris 更适合湖仓一体与统一分析场景。


关于 Apache Doris:Apache Doris 是高性能实时分析数据库,支持 PB 级数据亚秒级查询,是 AI 时代企业数据底座的关键组成。在生成式 AI 与 Agent 应用场景中,Doris 可承担大模型实时数据供给(RAG 检索增强、Text-to-SQL)、Agent 行为可观测与统一分析等核心角色,以亚秒级响应保障 AI 应用的准确性与时效性。SelectDB 是 Apache Doris 的商业化公司,提供企业级支持与云原生服务,助力企业快速将实时分析能力接入 AI 业务。欢迎加入 Doris 社区 交流更多实践。

内容概要:本文研究了在通信资源受限与恶意攻击干扰下的孤岛微电网分布式二次控制策略,提出了一种兼具通信效率与攻击弹性的动态事件触发控制方案,旨在实现电压频率的精确恢复与有功无功功率的均衡共享。通过Simulink仿真与Matlab代码实现,系统验证了该策略在显著降低通信频次的同时,能够有效抵御拒绝服务(DoS)等网络攻击,保障微电网在复杂环境下的稳定运行。研究深入探讨了动态事件触发机制的设计、分布式控制算法的弹性优化,并确保系统具备排除芝诺行为的能力,从而全面提升微电网在极端条件下的鲁棒性、可靠性与运行效率。; 适合人群:具备电力系统、自动化或相关领域基础知识,从事微电网、分布式控制、能源系统安全方向研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于孤岛微电网在遭受通信限制和网络攻击时的二次电压与频率调节;②为高比例新能源接入场景下的微电网提供具备攻击容忍能力的弹性控制解决方案;③支持科研仿真验证与教学演示,推动分布式能源系统安全控制技术的发展。; 阅读建议:建议结合提供的Simulink模型与Matlab代码进行仿真实践,深入理解控制策略的实现细节,并可通过修改攻击模型、通信参数或网络拓扑进行拓展性研究,以全面掌握其弹性机制与优化潜力。
上市公司绿色全要素生产率(Green Total Factor Productivity,简称GTFP)是衡量企业绿色发展和资源配置效率的重要指标,其不仅关注经济效益,还强调环境效益,体现了绿色发展理念。 一、上市公司绿色全要素生产率的介绍 上市公司绿色全要素生产率是衡量企业在实现绿色发展的过程中,如何有效地利用劳动、资本、能源等资源进行生产的综合效率。本分享数据涵盖2500+家上市公司,数据年份为2007-2022年,共46424条样本,含证券代码、年份、绿色全要素生产率、绿色技术效率变化指数、绿色技术进步变化指数。 二、数据指标 绿色全要素生产率 绿色技术效率变化指数 绿色技术进步变化指数 用于衡量企业绿色发展效率的综合指标 反映绿色技术使用效率的变化 衡量绿色技术进步的效果 三、测算方式 企业绿色全要素生产率的测算采用了非径向SBM-ML指数(简称“ML指数”)模型。该模型通过将企业的环境污染、绿色技术进步等因素纳入生产效率评价体系,全面反映了企业在绿色发展方面的整体表现。 具体的测算方式如下: (1)要素投入:以企业员工数作为劳动投入的代理变量,企业固定资产净额作为资本投入的代理变量,企业所在城市的工业用电量根据企业从业人员占城市城镇人员就业比重进行换算作为能源投入的代理变量。 (2)期望产出:以企业的营业收入作为期望产出的代理变量。 (3)非期望产出:将企业从业人员占所在城市城镇人员就业比重与“工业三废”(即工业二氧化硫、工业废水、工业烟粉尘排放量)结合,进行换算,作为非期望产出的代理变量。 四、参考文献 崔立志,孙旺,黄敏敏.新能源示范城市建设对企业绿色全要素生产率的影响研究——基于A股上市公司的实证分析[J].广西财经学院学报,2023,36(01):92-104. 五、数据来源 数据来源于《中国城市统计年鉴》、《中国环境统计年鉴》、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SelectDB技术团队

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值