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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 带你读《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日志并进行多维度分析。
相关文章
|
1月前
|
缓存 安全 Java
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
阿里云数据库 SelectDB 内核 Apache Doris 2.0.6 版本正式发布
|
1月前
|
SQL 存储 JSON
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
亲爱的社区小伙伴们,Apache Doris 2.1.0 版本已于 2024 年 3 月 8 日正式发布,新版本开箱盲测性能大幅优化,在复杂查询性能方面提升100%,新增Arrow Flight接口加速数据读取千倍,支持半结构化数据类型与分析函数。异步多表物化视图优化查询并助力仓库分层建模。引入自增列、自动分区等存储优化,提升实时写入效率。Workload Group 资源隔离强化及运行时监控功能升级,保障多负载场景下的稳定性。新版本已经上线,欢迎大家下载使用!
阿里云数据库 SelectDB 内核 Apache Doris 2.1.0 版本发布:开箱盲测性能大幅优化,复杂查询性能提升 100%
|
2月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
1天前
|
数据可视化 数据挖掘
R语言生存分析数据分析可视化案例(上)
R语言生存分析数据分析可视化案例
|
11天前
|
数据采集 数据可视化 数据挖掘
Seaborn在数据分析中的应用:案例分析与实践
【4月更文挑战第17天】本文介绍了Seaborn在数据分析中的应用,它是一个基于Python的可视化库,简化了复杂数据的图表创建。通过一个销售数据分析的案例,展示了数据加载、描述性统计、相关性分析、多变量分析及高级可视化步骤。实践技巧包括数据清洗、图表选择、颜色使用、注释标签和交互性。Seaborn助力高效数据探索和理解,提升分析效率。注意,实际使用需根据数据集和目标调整,并参考最新文档。
|
11天前
|
供应链 搜索推荐 数据挖掘
Pandas实战案例:电商数据分析的实践与挑战
【4月更文挑战第16天】本文通过一个电商数据分析案例展示了Pandas在处理销售数据、用户行为分析及商品销售趋势预测中的应用。在数据准备与清洗阶段,Pandas用于处理缺失值、重复值。接着,通过用户购买行为和商品销售趋势分析,构建用户画像并预测销售趋势。实践中遇到的大数据量和数据多样性挑战,通过分布式计算和数据标准化解决。未来将继续深入研究Pandas与其他先进技术的结合,提升决策支持能力。
|
11天前
|
存储 数据可视化 数据挖掘
实战案例:Pandas在金融数据分析中的应用
【4月更文挑战第16天】本文通过实例展示了Pandas在金融数据分析中的应用。案例中,一家投资机构使用Pandas加载、清洗股票历史价格数据,删除无关列并重命名,将日期设为索引。接着,数据被可视化以观察价格走势,进行基本统计分析了解价格分布,以及计算移动平均线来平滑波动。Pandas的便捷功能在金融数据分析中体现出高效率和实用性。
|
1月前
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
存储 消息中间件 监控
Zoom 基于Apache Hudi 的流式日志处理实践
Zoom 基于Apache Hudi 的流式日志处理实践
44 1

热门文章

最新文章

推荐镜像

更多