带你读《Apache Doris 案例集》—— 02 河北幸福消费金融基于Apache Doris 构建实时数仓,查询提速400倍!(1)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 带你读《Apache Doris 案例集》—— 02 河北幸福消费金融基于Apache Doris 构建实时数仓,查询提速400倍!(1)

作者:河北幸福消费金融信息科技部

 

导读: 随着河北幸福消费金融的客户数量和放贷金额持续上升,如何依托大数据、数据分析等技术来提供更好决策支持、提高工作效率和用户体验,成为当前亟需解决的问题。基于此,公司决定搭建数据中台,从基于TDH的离线数仓再到基于Apache Doris的实时数仓,最终统一了数据出口,提升了数据质量,并实现查询速度400倍的提升。本文将详细为大家分享河北幸福消费金融数据中台搭建经验和应用实践,希望为其他企业带来有益的参考。 

 

河北幸福消费金融股份有限公司由张家口银行发起设立,是2017 6 月正式开业的全国第22家、河北省首家消费金融公司,主要面向个人客户发放最高额不超过20万元的普惠、小额、信用消费贷款。目前公司服务区域覆盖全国32个省级单位,相继获评为国家科学技术部认定的全国高新技术企业、河北省科技型中小企业和石家庄市科技小巨人企业。

 

随着客户数量和放贷金额持续上升,如何依托大数据、数据分析等技术,为各业务线人员提供更好的决策支持,如何提高工作效率、为客户提供更佳的使用体验,成为了当前亟需解决的问题。具体需求如下:

 

高管看板类:搭建高管驾驶舱帮助高层快速了解公司当前的整体经营状况,驾驶舱集成全业务线数据,包括实时业务指标和离线业务指标,在该场景下我们希望查询结果可以在毫秒内返回,便于管理层进行高效决策。 

 

实时变量类:为给风控决策提供实时支撑,需在500ms 内返回全产品线查询结果,并可基于申请、授信、关联人、逾期以及还款等基础信息,计算产品级、客户级和借据级高维度衍生变量。 

 

决策分析类:为给各业务部门提供业务分析和决策支撑,需在秒级返回年、季、月多维度的主题报表,特别是风险部门,需要从放款开始回溯全生命周期的运营情况;而计财部门,则需要通过以往经营数据表现,预测未来的盈利,数据量大且逻辑复杂。 

 

风险建模类:提供全量、明细级的数据,用于风险建模的变量跑批,满足对客户评分评级,参与审批、授信等核心业务的要求,以支持业务指标的观测、投入产出分析、变量筛选以及决策制定等业务需求。

 

监管合规类:为确保业务符合相关法律法规、行业标准等规范,需要根据监管合规的要求进行合规子系统的定期上报,上报的数据分为指标汇总项数据和明细数据。

 

为了满足不同业务线对数据分析的需求,公司开始搭建数据中台并对其进行优化。最初,公司基于商业化产品TDH 搭建了离线数仓,以满足基本数据分析需求。然而,随着数据时效性的提高和实时分析需求增加,公司迫切需要搭建一款实时数据仓库。因此引入了Apache Doris并在此基础上搭建了实时数仓,最终建立了一个高效、稳定的数据中台。本文将详细为大家分享河北幸福消费金融数据中台搭建经验和应用实践,希望为其他企业带来一些有益的参考。 

 

基于TDH  的离线数仓 

 

因早期主要解决离线分析需求,优先基于 TDH 集群建设离线数仓。通过 SqoopDataX  将上游

数据采集到离线数仓,经过标准化数据清洗,完成数仓日常跑批。离线数仓架构图如下所示:

image.png

 

 随着数据的积累和业务人员对数据时效的要求越来越高,基于 TDH  离线平台的一些问题逐渐显现出来:

 

数据采集同步时效慢:离线数仓抽数工具依赖于SqoopDataX 等组件,而受限于调度周期,此类工具采集的数据必然有滞后性。

 

资源冲突大:离线数仓每日跑批时间跨度大,一般从凌晨到下午5点左右,这将导致跑批和即席查询之间发生资源冲突,影响业务人员的使用体验。

 

查询分析慢:在使用离线平台进行自定义统计分析和数据探索时,查询分析响应速度慢、时效性难以保障,严重影响工作效率。

 

●T+1 延迟高:各业务线对实时数据处理的需求在逐渐增多, T+1 的数据已经无法适应数据快速获取和产生业务价值的诉求。 

 

报表定制周期长:报表定制化开发有固定的迭代周期,难以满足业务人员对数据的灵活多样的分析探索。 

 

烟囱效应:定期上报数据时,数据中台需要从多个业务系统中拉取数据。当业务系统发生变更后,会波及上述相关的报送子系统,形成烟囱效应。

 

 技术选型 

 

为了解决上述问题,我们迫切需要一款 MPP   引擎来构建实时数仓。对于新引擎我们有几个基本的要求:首先,需要简单易上手,以便团队快速掌握和使用;其次,需要具备强大的数据导入能力,以便快速高效地导入海量数据;同时,需要兼容离线数仓相关工具,以便与现有的数据处理工具和技术体系无缝衔接;此外,搭建和切换成本也需要低,以便快速部署使用和进行扩缩容;最后,它需要具备较好的并发能力和优异的查询性能,以便支持高并发、复杂查询等业务场景的需求。

 

在以上选型要求驱动下,我们对目前比较流行的 ClickHouse  Doris 进行了系统的调研,其中Apache Doris更符合我们的选型的要求,具体原因如下:

 

部署成本低: Doris采用分布式技术架构,部署只需两个进程,不依赖其他系统,在线集群扩缩容,自动副本修复,部署及使用成本较低。

 

快速上手使用:Doris采用主流的分区分桶设计思路,索引结构与 MySQL  的思路类似,相关  人员在使用Doris  时无需学习大量的新知识。相比之下,ClickHouse在建库建表需要分别指定类型,使用流程相对比较繁琐,上手难度也比较高。

 

工具兼容:业务人员通常使用 TDH  的客户端工具WaterDrop   进行离线数仓查询, Doris 过标准协议链接可完美兼容WaterDrop,  ClickHouse 无法兼容。

 

数据生态圈丰富: Doris 数据生态圈丰富,与 FlinkKafka 等组件结合度较高,同时支持联邦查询,提供了丰富的数据导入和接入方式,可以满足多场景下的数据处理需求。 

 

高并发能力:我们对 Doris 进行了性能压力测试,在高并发和大数据量的情况下,Doris 现出较好的性能和稳定性,能够满足不同业务场景的需求。 

 

社区活跃度高:Doris 社区非常活跃,有大量的开发者和用户参与其中,提供了丰富的技术支持和解决方案。同时 Doris 社区提供了全面的文档和资料,方便用户学习和使DorisSelectDB 为社区提供了一支全职专业的技术团队为社区用户提供服务与支持,任何问题均可得到快速响应。 

 

 基于Doris 的实时数据仓库 

 

在离线数仓的基础上,使用 Doris  结合CDH  Airflow  集群搭建了实时数仓,实时数仓的数据来源主要为离线数仓和 MySQL,  使用 Flink CDC 结合 PyFlink (使用 Python 调用 Flink API, PyFlink) MySQL  中的数据实时地采集到核心计算引擎Doris (后文将详细介绍 ) ,    Airflow 分布式调度系统,可以将实时任务进行常规化的调度运维。我们对 Doris引擎进行了基本数仓分层,数据经过各层处理后统一为各场景提供数据服务。 

 image.png

基于 Doris提供的丰富导入方式,我们可以快速将离线数仓中的实时数据清洗整合接入到Doris集群中,实现数据的快速迁移。目前我们已经将基于TDH的查询分析和数据探索服务全部转移Doris  引擎上,借助 Doris引擎快速计算的能力和优异的查询性能,可以更高效地进行数据处理和分析,业务处理速度和效率得到显著提升。

 

以某 SQL 为例,该 SQL 主要应用在信贷审批场景。我们对比了原有架构和新架构从十万、千 万,亿级别的三个大表 Join 查询返回速度。结果显示,在过去TDH架构中执行查询需要1130秒才可返回结果,而基于Doris   的新架构中仅需要1.7即可返回结果,速度提升400 

 

数据规模: image.png

 

原有离线数仓:需要1130秒才可返回结果  image.png 

 基于Doris的新数仓:优化查询平均返回时间仅需1.7秒,有时甚至可以1秒内返回。

image.png


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

带你读《Apache Doris 案例集》—— 02 河北幸福消费金融基于Apache Doris 构建实时数仓,查询提速400倍!(2):https://developer.aliyun.com/article/1405773


相关实践学习
基于Hologres+PAI+计算巢,5分钟搭建企业级AI问答知识库
本场景采用阿里云人工智能平台PAI、Hologres向量计算和计算巢,搭建企业级AI问答知识库。通过本教程的操作,5分钟即可拉起大模型(PAI)、向量计算(Hologres)与WebUI资源,可直接进行对话问答。
相关文章
|
2月前
|
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月前
|
缓存 监控
遇到Hologres慢查询列表的导出功能出现问题,无法下载查询结果的情况
【2月更文挑战第20天】遇到Hologres慢查询列表的导出功能出现问题,无法下载查询结果的情况
56 1
|
2月前
|
消息中间件 存储 关系型数据库
使用Apache Hudi构建下一代Lakehouse
使用Apache Hudi构建下一代Lakehouse
38 0
|
14天前
|
消息中间件 存储 Java
深度探索:使用Apache Kafka构建高效Java消息队列处理系统
【4月更文挑战第17天】本文介绍了在Java环境下使用Apache Kafka进行消息队列处理的方法。Kafka是一个分布式流处理平台,采用发布/订阅模型,支持高效的消息生产和消费。文章详细讲解了Kafka的核心概念,包括主题、生产者和消费者,以及消息的存储和消费流程。此外,还展示了Java代码示例,说明如何创建生产者和消费者。最后,讨论了在高并发场景下的优化策略,如分区、消息压缩和批处理。通过理解和应用这些策略,可以构建高性能的消息系统。
|
2月前
|
SQL 分布式计算 NoSQL
使用Apache Hudi和Debezium构建健壮的CDC管道
使用Apache Hudi和Debezium构建健壮的CDC管道
19 0
|
2月前
|
存储 SQL 分布式计算
使用Apache Hudi构建大规模、事务性数据湖
使用Apache Hudi构建大规模、事务性数据湖
20 0
|
2月前
|
分布式计算 大数据 测试技术
查询时间降低60%!Apache Hudi数据布局黑科技了解下
查询时间降低60%!Apache Hudi数据布局黑科技了解下
25 0
|
2月前
|
存储 SQL 分布式计算
Apache Hudi在Linkflow构建实时数据湖的生产实践
Apache Hudi在Linkflow构建实时数据湖的生产实践
40 0
|
2月前
|
存储 SQL 分布式计算
使用Apache Pulsar + Hudi 构建Lakehouse方案了解下?
使用Apache Pulsar + Hudi 构建Lakehouse方案了解下?
30 0
|
2月前
|
存储 分布式计算 分布式数据库
字节跳动基于Apache Hudi构建EB级数据湖实践
字节跳动基于Apache Hudi构建EB级数据湖实践
27 2

推荐镜像

更多