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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 带你读《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越来越好!

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
11天前
|
人工智能 监控 数据挖掘
6/14 上海,Apache Doris x 阿里云 SelectDB AI 主题线下 Meetup 正式开启报名!
6 月 14 日,由 Apache Doris 社区、飞轮科技、阿里云联合发起的湖仓数智融合、AI 洞见未来:Apache Doris x 阿里云 SelectDB 联合 Meetup 将在上海·汇付天下总部大楼正式开启,邀您一同探索 AI 与数据分析的融合实践!
200 76
|
24天前
|
安全 Apache 数据库
【倒计时3天】NineData x Apache Doris x 阿里云联合举办数据库技术Meetup,5月24日深圳见!
5月24日,NineData联合Apache Doris与阿里云在深圳举办数据库技术Meetup。活动聚焦「数据实时分析」与「数据同步迁移」两大领域,邀请行业专家分享技术趋势、产品实践及解决方案,助力企业构建高效安全的数据管理体系。时间:14:00-17:30;地点:深圳新一代产业园2栋20楼会议室。线下名额有限(80人),速报名参与深度交流!
45 1
|
8天前
|
人工智能 运维 监控
Aipy实战:分析apache2日志中的网站攻击痕迹
Apache2日志系统灵活且信息全面,但安全分析、实时分析和合规性审计存在较高技术门槛。为降低难度,可借助AI工具如aipy高效分析日志,快速发现攻击痕迹并提供反制措施。通过结合AI与学习技术知识,新手运维人员能更轻松掌握复杂日志分析任务,提升工作效率与技能水平。
|
2月前
|
SQL 分布式数据库 Apache
网易游戏 x Apache Doris:湖仓一体架构演进之路
网易游戏 Apache Doris 集群超 20 个 ,总节点数百个,已对接内部 200+ 项目,日均查询量超过 1500 万,总存储数据量 PB 级别。
网易游戏 x Apache Doris:湖仓一体架构演进之路
|
2月前
|
存储 人工智能 数据处理
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
秉承“以场景驱动创新” 的核心理念,持续深耕三大核心场景的关键能力,并对大模型 GenAI 场景的融合应用进行重点投入,为智能时代构建实时、高效、统一的数据底座。
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
|
2月前
|
存储 SQL 缓存
Apache Doris & SelectDB 技术能力全面解析
本文将对 Doris & SelectDB 适合的分析场景和技术能力进行概述解析
Apache Doris & SelectDB 技术能力全面解析
|
2月前
|
监控 安全 BI
优化 Apache 日志记录的 5 个最佳实践
Apache 日志记录对于维护系统运行状况和网络安全至关重要,其核心包括访问日志与错误日志的管理。通过制定合理的日志策略,如选择合适的日志格式、利用条件日志减少冗余、优化日志级别、使用取证模块提升安全性及实施日志轮换,可有效提高日志可用性并降低系统负担。此外,借助 Eventlog Analyzer 等专业工具,能够实现日志的高效收集、可视化分析与威胁检测,从而精准定位安全隐患、评估服务器性能,并满足合规需求,为强化网络安全提供有力支持。
优化 Apache 日志记录的 5 个最佳实践
|
2月前
|
存储 SQL Java
Apache Doris 2.1.9 版本正式发布
Apache Doris 2.1.9 版本正式发布,欢迎使用~
|
6月前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
559 33
The Past, Present and Future of Apache Flink
|
8月前
|
SQL Java API
Apache Flink 2.0-preview released
Apache Flink 社区正积极筹备 Flink 2.0 的发布,这是自 Flink 1.0 发布以来的首个重大更新。Flink 2.0 将引入多项激动人心的功能和改进,包括存算分离状态管理、物化表、批作业自适应执行等,同时也包含了一些不兼容的变更。目前提供的预览版旨在让用户提前尝试新功能并收集反馈,但不建议在生产环境中使用。
1346 13
Apache Flink 2.0-preview released

推荐镜像

更多