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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 带你读《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日志并进行多维度分析。
相关文章
|
6月前
|
存储 消息中间件 Java
Apache Flink 实践问题之原生TM UI日志问题如何解决
Apache Flink 实践问题之原生TM UI日志问题如何解决
58 1
|
29天前
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的 Web 服务器,保护其平台需监控活动和事件。Apache 日志分为访问日志和错误日志,分别记录用户请求和服务器错误信息。EventLog Analyzer 是一款强大的日志查看工具,提供集中收集、分析、实时警报和安全监控功能,帮助管理员识别趋势、检测威胁并确保合规性。通过直观的仪表板和自动化响应,它简化了大规模日志管理,增强了 Apache 服务器的安全性和性能。
|
2月前
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
|
3月前
|
消息中间件 数据挖掘 Kafka
Apache Kafka流处理实战:构建实时数据分析应用
【10月更文挑战第24天】在当今这个数据爆炸的时代,能够快速准确地处理实时数据变得尤为重要。无论是金融交易监控、网络行为分析还是物联网设备的数据收集,实时数据处理技术都是不可或缺的一部分。Apache Kafka作为一款高性能的消息队列系统,不仅支持传统的消息传递模式,还提供了强大的流处理能力,能够帮助开发者构建高效、可扩展的实时数据分析应用。
117 5
|
11天前
|
存储 运维 监控
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
中信银行信用卡中心每日新增日志数据 140 亿条(80TB),全量归档日志量超 40PB,早期基于 Elasticsearch 构建的日志云平台,面临存储成本高、实时写入性能差、文本检索慢以及日志分析能力不足等问题。因此使用 Apache Doris 替换 Elasticsearch,实现资源投入降低 50%、查询速度提升 2~4 倍,同时显著提高了运维效率。
金融场景 PB 级大规模日志平台:中信银行信用卡中心从 Elasticsearch 到 Apache Doris 的先进实践
|
2月前
|
存储 监控 安全
实时记录和查看Apache 日志
Apache 是一个开源、跨平台的Web服务器,保护其安全依赖于监控活动和分析访问日志。日志分为访问日志和错误日志,前者记录用户请求及响应情况,后者记录服务器错误信息。EventLog Analyzer等工具可集中收集、分析日志,提供直观的仪表板和实时警报,帮助识别趋势、异常和威胁,确保服务器稳定性和安全性,并支持合规管理。
|
2月前
|
机器学习/深度学习 数据采集 DataWorks
数据分析经典案例重现:使用DataWorks Notebook 实现Kaggle竞赛之房价预测,成为数据分析大神!
Python是目前当之无愧的数据分析第一语言,大量的数据科学家使用Python来完成各种各样的数据科学任务。本文以Kaggle竞赛中的房价预测为例,结合DataWorks Notebook,完成数据加载、数据探索、数据可视化、数据清洗、特征分析、特征处理、机器学习、回归预测等步骤,主要Python工具是Pandas和SKLearn。本文中仅仅使用了线性回归这一最基本的机器学习模型,读者可以自行尝试其他更加复杂模型,比如随机森林、支持向量机、XGBoost等。
|
3月前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
4月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
53 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
4月前
|
存储 数据挖掘 数据处理
Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析
【10月更文挑战第8天】随着数据湖技术的发展,越来越多企业开始利用这一技术优化数据处理。Apache Paimon 是一款高性能的数据湖框架,支持流式和批处理,适用于实时数据分析。本文分享了巴别时代在构建基于 Paimon 的 Streaming Lakehouse 的探索和实践经验,包括示例代码和实际应用中的优势与挑战。
154 1

推荐镜像

更多