首页/新闻资讯/正文详情

Apache Doris在PB级广告数据分析中的实践与优化

发布时间:2026/11/4 18:10:28 来源:云帆数科 栏目:资讯中心
Apache Doris在PB级广告数据分析中的实践与优化
1. 项目背景与挑战在数字广告领域数据规模的增长速度远超传统数据处理架构的承载能力。某头部短视频平台以下简称平台的广告业务日均数据增量达到PB级别原有系统面临三个核心痛点数据孤岛问题广告点击、曝光、转化等数据分散在20个独立集群跨集群查询需要人工拼接数据响应时间经常超过30分钟实时性瓶颈T1的离线计算模式导致关键指标延迟12小时以上无法支持实时竞价策略调整成本压力Hadoop集群的存储计算比长期维持在1:3大量计算资源被用于数据搬运而非价值产出注该平台广告系统峰值QPS超过200万每日新增标签数据超500TB传统MPP数据库在超过50节点时出现明显性能衰减2. 技术选型与架构设计2.1 数据库选型对比候选方案写入吞吐查询延迟扩展性成本指数Elasticsearch高低(ms)中等1.8ClickHouse中中(秒)高1.2Apache Doris高低(ms)高1.0最终选择Doris的核心考量向量化引擎SIMD指令集优化使宽表扫描性能提升5-8倍动态分区支持按小时级分区自动滚动避免小文件问题物化视图预计算关键指标将复杂查询转换为轻量扫描2.2 混合架构设计[Kafka] │ ├─[Flink]─→[Doris 实时集群]──┐ │ │ └─[Spark]─→[HDFS]───────→[Doris 离线集群]─→[统一服务层]关键设计细节双链路写入Flink处理实时数据1s延迟Spark处理离线批量数据冷热分离热数据保留7天在SSD冷数据自动转存至对象存储资源隔离BE节点划分专属资源组避免分析查询影响写入吞吐3. 核心实现与优化3.1 数据模型设计CREATE TABLE ad_event ( timestamp DATETIME NOT NULL, ad_id LARGEINT NOT NULL, user_id VARCHAR(256) NOT NULL, event_type TINYINT COMMENT 1-click 2-impression, cost DECIMAL(20,6) DEFAULT 0, tags JSON ) PARTITION BY RANGE(timestamp) ( PARTITION p202301 VALUES LESS THAN (2023-02-01), PARTITION p202302 VALUES LESS THAN (2023-03-01) ) DISTRIBUTED BY HASH(ad_id) BUCKETS 128 PROPERTIES ( replication_num 3, storage_medium SSD, storage_cooldown_time 7 days );设计要点动态分区设置dynamic_partition.enabletrue实现自动管理分桶策略按ad_id哈希分桶确保相同广告的数据局部性JSON字段使用Doris 2.0的JSON类型存储动态标签3.2 性能优化实践写入优化批量提交将Flink的sink.buffer-flush.interval调整为10s内存控制设置write_buffer_size1GB避免频繁刷盘并行度BE节点数Kafka分区数×2查询优化-- 创建物化视图加速CTR计算 CREATE MATERIALIZED VIEW ad_ctr_mv DISTRIBUTED BY HASH(ad_id) REFRESH ASYNC AS SELECT ad_id, SUM(CASE WHEN event_type1 THEN 1 ELSE 0 END)/COUNT(*) AS ctr FROM ad_event GROUP BY ad_id;实测效果扫描数据量从TB级降至GB级95%的查询响应时间500ms资源消耗降低60%4. 生产环境落地4.1 集群部署方案节点类型数量配置存储FE532C128G无BE20064C256G 8×1.6TB NVMe50PB网络配置10Gbps RDMA网络副本间流量优先走同机架链路4.2 监控体系搭建关键监控项写入延迟从Kafka到Doris可见延迟Compaction积压监控be_compaction_score查询百分位P99/P95/P50响应时间告警规则示例rules: - alert: HighQueryLatency expr: quantile(0.99, doris_query_duration) 3000 for: 5m labels: severity: critical5. 典型问题与解决方案5.1 热点问题处理现象某爆款广告导致单个tablet写入QPS突增10倍解决方案临时增加副本数ALTER TABLE ad_event SET (replication_num5);手动分裂热点桶ADMIN SET REPLICA DISTRIBUTION FROM ... TO ...长期方案在Flink层做预聚合5.2 内存控制OOM场景大JSON解析消耗过多BE内存优化措施设置exec_mem_limit8G限制查询内存启用Spill to Diskspill_modeautoJSON字段添加Schema约束tags.schema{price:double}6. 收益与展望实施效果对比指标旧架构Doris方案提升幅度查询延迟30min3s600x存储成本1.00.460%↓运维复杂度高中-未来优化方向存算分离测试S3作为冷存储的性能表现向量化JOIN利用2.1版本的新特性优化多表关联AI集成通过Doris-on-Spark支持广告CTR模型训练实际部署中发现在凌晨批量加载时段需要动态调整BE的flush_thread_num_per_store参数从默认4调整为8可提升30%的吞吐量。这个经验来自三次大规模数据迁移的实践总结。

相关推荐

新型储能系统集成与BMS/EMS:从装机规模到度电成本
新型储能系统集成与BMS/EMS:从装机规模到度电成本

简介:《2024中国新型储能行业发展白皮书》由储能领跑者联盟编写,面向政府决策者、储能企业、投资与研究人士,系统梳理碳中和背景下新型储能的政策环境、商业模式、市场竞争与技术演进,帮助读者快速建立行业认知并把握源网侧、工商… · 2026/11/4 18:10:28

机械工程师如何用Codex实现CAD自动化与批量提效
机械工程师如何用Codex实现CAD自动化与批量提效

机械工程师的日常里,有相当一部分时间并不是花在"设计"本身,而是消耗在重复性的图纸处理、参数核算、文件格式转换和批量修改上。装配体里几百个零件的属性要统一改一遍、一批二维图纸要按规则重命名、设计参数要在Excel和CAD之间来回倒腾——… · 2026/11/4 18:09:28

Agent开发的核心不是框架,而是这五件事——两年实战总结
Agent开发的核心不是框架,而是这五件事——两年实战总结

1. 做了近两年Agent开发,我先说结论:框架真的不值钱先交代一下背景。我是做后端出身,后面转大模型应用开发,从某个还比较早期的阶段就开始碰Agent相关的东西。前后加起来差不多两年时间,主流的和不太主流的框架都试过&… · 2026/11/4 18:09:28

数据科学与大数据毕业设计创新选题指南
数据科学与大数据毕业设计创新选题指南

1. 项目背景与核心价值每年毕业季,数据科学与大数据技术专业的学生们最头疼的问题就是选题。一个好的毕业设计题目既要体现专业核心能力,又要具备创新性和可行性。作为带过7届毕业设计的导师,我见过太多学生在选题阶段浪费大量时间&#xff0… · 2026/11/4 18:49:13

数据结构与算法分析C语言版解答手册:复杂度、递归与自测方法
数据结构与算法分析C语言版解答手册:复杂度、递归与自测方法

简介:这份 PDF 是 Mark Allen Weiss《Data Structures and Algorithm Analysis in C》第二版的配套习题解答手册,面向学习数据结构与算法分析课程、希望对照课后练习查漏补缺的本科生和自学者。内容按教材章节展开,涵盖算法复杂度与大 O 分析… · 2026/11/4 18:49:13

Excalidraw 白板 JSON 导入导出与配置持久化
Excalidraw 白板 JSON 导入导出与配置持久化

周五下午四点半,你把一张三十多个节点的手绘架构图在浏览器里画完,顺手点了根烟回来,发现标签页被系统回收了。刷新之后,白色画布上空空如也,那种感觉比丢代码还难受——代码好歹还有 git,白板上的东西是真… · 2026/11/4 18:49:13

无刷电机ax by cz轴系划分:为什么是120度而非垂直?
无刷电机ax by cz轴系划分:为什么是120度而非垂直?

前两天在技术交流群里看到一个挺有意思的问题:“直流无刷电机 ax by cz 怎么划分的,是按照垂直轴线划分的么?”我一看就猜到,问问题的八成是被电机绕组的轴系概念绕晕了。这里的“ax、by、cz”其实对应的是无刷电机里三相绕组 A、… · 2026/11/4 18:49:13

QtScrcpy投屏鼠标点不动:输入注入权限与通道排查
QtScrcpy投屏鼠标点不动:输入注入权限与通道排查

画面在窗口里跑得飞快,声音也同步,键盘敲字能进输入框,唯独鼠标点下去屏幕纹丝不动——这种“半瘫”状态是 Android 投屏控制里最让人抓狂的一类故障。QtScrcpy 这款基于 scrcpy 内核的图形化投屏工具,靠 ADB 把设备画面拉回电脑&… · 2026/11/4 18:49:13

SQLite清空表的三种方法与性能对比
SQLite清空表的三种方法与性能对比

1. SQLite Truncate Table操作的本质解析 在SQLite中,TRUNCATE TABLE并不是一个原生支持的SQL命令。这个看似简单的操作背后隐藏着数据库引擎设计的深层考量。与MySQL或PostgreSQL不同,SQLite选择通过DELETE FROM语句来实现类似功能,这种设计… · 2026/11/4 18:48:12

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码