带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(2)

简介: 带你读《Apache Doris 案例集》——06 Apache Doris 助力中国联通万亿日志数据分析提速10倍(2)

更多精彩内容,欢迎观看:

带你读《Apache Doris 案例集》——06 Apache   Doris  助力中国联通万亿日志数据分析提速10倍(1):https://developer.aliyun.com/article/1405720


基于Doris 的实时数据仓库

 image.png  

 

在项目二期的建设中,我们使用 Apache Doris替换了 Hive 成功搭建实时数据仓库,实现数据的实时采集、处理和分析,同时使用Apache  Doris替换ClickHouse  作为 OLAP  引擎。架构工作机制如下所示:

 

ODS   贴源层:主要用于存放未经处理的原始数据,通过 Flume 等实时采集工具,将各个厂商未经处理的原始日志以及告警数据统一汇集到 Kafka  中,同时完全相同的数据也会被存入HDFS中一份,作为原始数据核查依据或进行数据回放。

 

DWD 明细层:该层为事实表,数据通过 Flink算引擎实时对生产数据及字段进行清洗、标准化、回填、脱敏之后写入KafkaKafka  中的数据还会对接到 Doris 中,以支持明细日志数据详情回溯查询、准实时模型分析、实时大屏及报表业务。由于大部分日志数据对于数据重复不是很敏感,因此 DWD 层采用 DorisDuplicateKey模型。

 

DWS汇总层:以明细层 Kafka 数据为基础,通过动态规则引擎进行细粒度的聚合分析,为后续的业务查询和OLAP分析做准备,同时大部分建模分析的结果也集中在DWS层。

 

ADS  应用层:该层主要使用DorisAggregateKey模型和Unique Key模型对以上三层的数据进行自动聚合或者自动更新,以满足前端人员的具体分析需求。


新架构的应用实践 

日增百亿数据,稳定快速导入

 

数据分析平台平均每天有150 亿的业务日志数据新增,面对如此大规模的数据量,我们需要考虑如何将数据快速实时稳定入库。经调研,Doris Flink Connector 组件(主要依赖 Doris Stream  Load)可以实现海量数据快速导入。并且其使用非常简单,只需要导入相关依赖包进行简单的配置即可进行。在应用 Doris Flink Connector 数据写入性能可达到每秒20-30万条,极大地提升了数据导入的速度和效率,同时也不会对正常的数据分析造成干扰。 

 

在采用 Flink 进行高频实时写入 Doris 时,如果未合理调整参数配置,可能导致数据版本堆积。为避免该问题,我们进行了以下调整优化:

 

Flink    优化:为减轻 Doris写入压力,可通过提高FlinkCheckpoint时间来减少版本数量。具体来说,我们可以将Checkpoint 时间从之前的15秒提高为60秒,以减少批次写入频率,降低 Doris 单位时间处理事务数量。这样可以在不影响业务的情况下,缓解写入压力,避免产生大量的数据版本。

 

 

数据预处理:为了减轻 Doris 的写入压力,部分数据我们会先在Flink 中通过主键 ID 进行预聚合,将来自多个表中相同的 ID进行处理并构建大宽表,降低多流数据的写入资源消耗。


Doris   优化:调整DorisBE参数,增加 CPU资源参与Compaction  操作;根据业务设置合理的表分区、分桶和副本数量,避免过多分分片,以降低 Compaction   的开销。同时增大max  tablet  version  num     , 避免版本堆积。

 

通过以上优化措施,每日新增的百亿数据可以平稳导入 Doris 中,整个导入过程中BE 表现稳定,CompactionScore始终保持低位,大批量数据的写入对于前端查询的性能也没有造成任何影响。同时在 DorisUniqueKey模型的加持下,我们可以利用Flink对输入数据进行关联、聚合等处理,再以微批、精准一次性写入 Doris中,实现了数据秒级更新。

 

存储资源合理配置,成本节约50%

 

日志数据具有非常大的数据量和数据增长速度,如果不对存储资源进行合理分配和控制,存储成本将会成为一个巨大的负担。日志数据中也会存在重要性的区分,有一定比例的数据价值密度比较低,如果毫无差别的将这些数据都存储下来,不仅会造成存储浪费,也会增加数据分析的难度。为了有效解决这些问题,我们采用了一系列策略来降低数据存储成本:

 

ZSTD高效压缩算法: 利用Doris的新特性——ZSTD  高效压缩算法进行压缩存储。在建表时指定压缩方法为 ZSTD,  特别是对数据量超过T 级别的数据表,这种压缩方法可以有效地减少数据占用的存储空间,数据压缩比最高可达1:10。即使采用3副本来保证数据的高可靠,数据存储占用的空间仍有非常大幅度的降低。

 

 

冷热数据精细化管理:Doris 中只存储近一年的数据,将更早的数据备份到成本更低的存储介质中。同时使用热数据转冷的功能,在SSD 中仅存储最近7的数据,将7 天之前的数据转存到 HDD 中,以进一步降低存储成本。这样可以根据数据的使用频率,合理分配存储资源,达到性能和成本的平衡。目前Apache Doris 2.0版本已经实现了对冷热数据分层功能的支持,这一功能可以将冷数据下沉到存储成本更加低廉的对象存储中,冷数据在对象存储上的保存方式也从多副本变为单副本,存储成本进一步降至原先的三分之一,同时也减少了因存储附加的计算资源成本和网络开销成本,目前我们正在积极测试中,未来有机会也会与大家分享实践经验。 

 

分区级副本设置:3个月以内的数据设置为高频使用数据,将其分区设置3副本;将3-6个月的数据分区设置为2副本;将6个月之前的数据分区设置为1副本。这样可以根据数据的使用情况,合理分配副本数量,实现存储成本降低的同时也充分利用多副本来提升热数据的查询性能。 

 

借助于 Doris 极高效率的压缩算法、冷热数据分层管理、分区级副本设置等功能, 可对存储资源合理分配,最终实现存储成本节约50%,成功达到性能和成本的平衡。


数据规模分级查询,查询速度提升10+

 

日志中包含了许多对分析及时性要求非常高的数据,例如异常事件、故障信息等,因此为了保障日志数据的查询效率,我们以数据量的级别为基准采用了不同的查询策略: 

 

对于100G以下的数据,可以采用分区表的形式进行查询。在业务初期业务表按照天进行分区,每天执行任务需要手动管理分区为我们带来了非常大的维护成本。后来我们利用Doris 的动态分区功能,针对数据量较大的表可以使用小时作为分区字段,为了避免分区内数据倾 斜,以雪花ID 作为分桶字段,保证数据的均衡。此外为了避免数据积压,我们还开启了动态分区的起始偏移,保留近20天的数据来支撑业务分析。这样可以有效地降低数据积压的风险,同时也能够满足业务的分析需求。 

 

对于100G1T的数据,我们采用物化视图进行查询,物化视图是一种预先计算并存储结果集的方式,可以减少查询所需的计算时间和资源消耗,从而提高查询效率。Doris系统提供了完整的物化视图 DDL 语法,可用于创建、查看和删除等操作,这些语法与 PostgreSQL Oracle语法一致,使用简单、不需重新学习。

 

 

对于上百T 的数据,我们通过 Aggregate 聚合模型表进行查询,使用 Aggregate 模型在数 据写入前进行预聚合,通过以上方式,我们成功将20亿条数据的查询时间进一步缩短至1-2s,有效提高了数据查询的效率。

 

 在一期数据分析平台中,大部分业务场景都是通过 T+1 的方式进行计算。而在基于 Doris   的二 期数据分析平台中,我们实现了对大部分业务准实时(分钟以及小时级)和实时计算场景的支持。同时结合以上优化措施,极大降低了各种维度指标的统计时间,以往需要分钟级别的明细查询,现在可以在毫秒级别迅速响应,极大地改善了用户体验;另外,在 Doris中,我们能够快速对百亿级别的大表进行不同维度的数据分析,只需要几秒即可获得查询结果,大大提高了联通各业务部门数据分析的能力。

 

收益总结


自引入 Apache Doris 以来,我们已经部署了多个集群、数十台机器,支持了中国联通30 多条业务线和数百个实时作业,日增日志数据百亿级别,单个集群的数据规模达到数 PBApacheDoris的成功应用为联通带来了多方面收益,主要包括如下方面: 

 

在数据导入方面,对于联通而言,每天都面临着庞大的日志增量,并且这些数据的实时性和准确性对于业务发展和决策至关重要,而 Doris Flink Connector助我们实现了数据快速且稳定导入,可轻松应对日增百亿数据的导入要求,为后续的数据处理和分析提供了更高效的解决方案。

 

在存储资源分配方面, 由于数据量庞大、存储周期长等原因,日志数据的存储成本一直是运营商面临的难题,通过采用Doris高效的压缩算法、冷热数据精细管理、分区级副本设置等功能,帮助我们降低了数据存储成本,数据存储利用效率和价值得到显著提升。

 

在查询性能方面, 快速获取日志数据查询结果可以帮助运营商及时掌控网络及系统情况,及时发现并解决问题,也有利于及时了解用户需求和行为,优化营销策略和服务方案。Doris在查询性能方面提供了强大的支持,  能够处理百亿级别大表按小时/天级别的明细查询,并支持不同维度聚合查询分析。业务线整体响应时间可在秒级或毫秒级别完成,甚至可以1-2s 内完成对20亿条数据的查询,查询速度较之前提升了10+倍。

 

未来规划 

 

在最新发布的Apache Doris 2.0版本中,Apache Doris 提供了大量新的功能,比如倒排索引功能和冷热数据分层等,对于日志分析场景来说都是具有重要意义的更新。目前我们是以数据存储周期为基准进行副本分配,并按照数据热度分别存储在SSD HDD 中,后续我们将使用冷热 数据分层新功能,将数据从 SSD 或者 HDD 下沉到对象存储中,从而降低数据存储成本,进一步达到服务器磁盘资源节省的目的。此外,我们正在对倒排索引功能进行测试,并计划先在小范围业务场景推广使用,倒排索引对于字符串类型的全文检索和普通数值、日期等类型的等值、范围检索具有更高效的支持,希望通过倒排索可以帮助我们进一步提高日志数据查询的效率和准确度。

 

 除此之外,基于联通的使用场景,我们对自动分桶功能提出一些建议。目前自动分桶计算逻辑是根据最近的分区数据量来动态决定当前分区的分桶数目,这种方式适用于分区数据量呈线性关系的业务表。然而,由于我们的业务表在白天的数据量较多,夜晚数据量较少,因此使用自动分桶会导致白天部分分区具有较少的分桶,而夜晚分区则具有较多的分桶。因此,未来我们期望社区可以增加一种新的分桶规则, 以前一天的数据分区存储情况为参照,来对当天的分区进行自动分 桶,这样可以更加准确的根据业务表特点进行自动分桶。当然我们也将对该功能的优化进行探索,及时与社区交流,将最新的优化代码贡献到社区,共同推动社区的发展进步。

 

最后,非常感谢SelectDB 的同学,在我们在使用Apache Doris 过程中遇到任何问题,他们都能给予了快速的响应与技术支持,未来我们会持续的将在实践过程中取得的相关成果贡献到社

区。希望Apache DorisSelectDB越来越好!

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
4月前
|
消息中间件 OLAP Kafka
Apache Doris 实时更新技术揭秘:为何在 OLAP 领域表现卓越?
Apache Doris 为何在 OLAP 领域表现卓越?凭借其主键模型、数据延迟、查询性能、并发处理、易用性等多方面特性的表现,在分析领域展现了独特的实时更新能力。
460 9
|
3月前
|
存储 自然语言处理 分布式计算
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
Apache Doris 3.1 正式发布!全面升级半结构化分析,支持 VARIANT 稀疏列与模板化 Schema,提升湖仓一体能力,增强 Iceberg/Paimon 集成,优化存储引擎与查询性能,助力高效数据分析。
591 4
Apache Doris 3.1 正式发布:半结构化分析全面升级,湖仓一体能力再跃新高
|
4月前
|
存储 分布式计算 Apache
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
小米通过将 Apache Doris(数据库)与 Apache Paimon(数据湖)深度融合,不仅解决了数据湖分析的性能瓶颈,更实现了 “1+1>2” 的协同效应。在这些实践下,小米在湖仓数据分析场景下获得了可观的业务收益。
897 9
湖仓一体:小米集团基于 Apache Doris + Apache Paimon 实现 6 倍性能飞跃
|
3月前
|
SQL 人工智能 数据挖掘
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
Apache Doris 4.0 原生集成 LLM 函数,将大语言模型能力深度融入 SQL 引擎,实现文本处理智能化与数据分析一体化。通过十大函数,支持智能客服、内容分析、金融风控等场景,提升实时决策效率。采用资源池化管理,保障数据一致性,降低传输开销,毫秒级完成 AI 分析。结合缓存复用、并行执行与权限控制,兼顾性能、成本与安全,推动数据库向 AI 原生演进。
330 0
Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践
|
4月前
|
人工智能 运维 监控
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
本文基于 Apache Doris 数据运维治理 Agent 展开讨论,如何让 AI 成为 Doris 数据运维工程师和数据治理专家的智能助手,并在某些场景下实现对人工操作的全面替代。这种变革不仅仅是技术层面的进步,更是数据运维治理思维方式的根本性转变:从“被动响应”到“主动预防”,从“人工判断”到“智能决策”,从“孤立处理”到“协同治理”。
747 11
智能运维与数据治理:基于 Apache Doris 的 Data Agent 解决方案
|
4月前
|
存储 数据挖掘 Apache
浩瀚深度:从 ClickHouse 到 Doris, 支撑单表 13PB、534 万亿行的超大规模数据分析场景
浩瀚深度旗下企业级大数据平台选择 Apache Doris 作为核心数据库解决方案,目前已在全国范围内十余个生产环境中稳步运行,其中最大规模集群部署于 117 个高性能服务器节点,单表原始数据量超 13PB,行数突破 534 万亿,日均导入数据约 145TB,节假日峰值达 158TB,是目前已知国内最大单表。
1053 10
浩瀚深度:从 ClickHouse 到 Doris, 支撑单表 13PB、534 万亿行的超大规模数据分析场景
|
4月前
|
SQL 存储 运维
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
本文介绍了 Apache Doris 在菜鸟的大规模落地的实践经验,菜鸟为什么选择 Doris,以及 Doris 如何在菜鸟从 0 开始,一步步的验证、落地,到如今上万核的规模,服务于各个业务线,Doris 已然成为菜鸟 OLAP 数据分析的最优选型。
344 2
Apache Doris 在菜鸟的大规模湖仓业务场景落地实践
|
4月前
|
SQL 存储 JSON
Apache Doris 2.1.10 版本正式发布
亲爱的社区小伙伴们,Apache Doris 2.1.10 版本已正式发布。2.1.10 版本对湖仓一体、半结构化数据类型、查询优化器、执行引擎、存储管理进行了若干改进优化。欢迎大家下载使用。
255 5
|
4月前
|
人工智能 自然语言处理 数据挖掘
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
在即将发布的 Apache Doris 4.0 版本中,我们正式引入了一系列 LLM 函数,将前沿的 AI 能力与日常的数据分析相结合,无论是精准提取文本信息,还是对评论进行情感分类,亦或生成精炼的文本摘要,皆可在数据库内部无缝完成。
345 0
Apache Doris 4.0 AI 能力揭秘(一):AI 函数之 LLM 函数介绍
|
5月前
|
SQL 人工智能 数据挖掘
Apache Doris + MCP:Agent 时代的实时数据分析底座
数据不再是静态的存储对象,而是流动的智能资源;数据库不再是单纯的存储系统,而是智能化的服务平台。Apache Doris 以其在 AI 方向的深度布局和技术创新,正在成为连接数据与智能的重要桥梁。
1314 0
Apache Doris + MCP:Agent 时代的实时数据分析底座

推荐镜像

更多