作者:河北幸福消费金融信息科技部
导读: 随着河北幸福消费金融的客户数量和放贷金额持续上升,如何依托大数据、数据分析等技术来提供更好决策支持、提高工作效率和用户体验,成为当前亟需解决的问题。基于此,公司决定搭建数据中台,从基于TDH的离线数仓再到基于Apache Doris的实时数仓,最终统一了数据出口,提升了数据质量,并实现查询速度400倍的提升。本文将详细为大家分享河北幸福消费金融数据中台搭建经验和应用实践,希望为其他企业带来有益的参考。
河北幸福消费金融股份有限公司由张家口银行发起设立,是2017 年6 月正式开业的全国第22家、河北省首家消费金融公司,主要面向个人客户发放最高额不超过20万元的普惠、小额、信用消费贷款。目前公司服务区域覆盖全国32个省级单位,相继获评为国家科学技术部认定的全国高新技术企业、河北省科技型中小企业和石家庄市科技“小巨人”企业。
随着客户数量和放贷金额持续上升,如何依托大数据、数据分析等技术,为各业务线人员提供更好的决策支持,如何提高工作效率、为客户提供更佳的使用体验,成为了当前亟需解决的问题。具体需求如下:
●高管看板类:搭建高管驾驶舱帮助高层快速了解公司当前的整体经营状况,驾驶舱集成全业务线数据,包括实时业务指标和离线业务指标,在该场景下我们希望查询结果可以在毫秒内返回,便于管理层进行高效决策。
●实时变量类:为给风控决策提供实时支撑,需在500ms 内返回全产品线查询结果,并可基于申请、授信、关联人、逾期以及还款等基础信息,计算产品级、客户级和借据级高维度衍生变量。
●决策分析类:为给各业务部门提供业务分析和决策支撑,需在秒级返回年、季、月多维度的主题报表,特别是风险部门,需要从放款开始回溯全生命周期的运营情况;而计财部门,则需要通过以往经营数据表现,预测未来的盈利,数据量大且逻辑复杂。
●风险建模类:提供全量、明细级的数据,用于风险建模的变量跑批,满足对客户评分评级,参与审批、授信等核心业务的要求,以支持业务指标的观测、投入产出分析、变量筛选以及决策制定等业务需求。
●监管合规类:为确保业务符合相关法律法规、行业标准等规范,需要根据监管合规的要求进行合规子系统的定期上报,上报的数据分为指标汇总项数据和明细数据。
为了满足不同业务线对数据分析的需求,公司开始搭建数据中台并对其进行优化。最初,公司基于商业化产品TDH 搭建了离线数仓,以满足基本数据分析需求。然而,随着数据时效性的提高和实时分析需求增加,公司迫切需要搭建一款实时数据仓库。因此引入了Apache Doris并在此基础上搭建了实时数仓,最终建立了一个高效、稳定的数据中台。本文将详细为大家分享河北幸福消费金融数据中台搭建经验和应用实践,希望为其他企业带来一些有益的参考。
基于TDH 的离线数仓
因早期主要解决离线分析需求,优先基于 TDH 集群建设离线数仓。通过 Sqoop、DataX 将上游
数据采集到离线数仓,经过标准化数据清洗,完成数仓日常跑批。离线数仓架构图如下所示:
随着数据的积累和业务人员对数据时效的要求越来越高,基于 TDH 离线平台的一些问题逐渐显现出来:
●数据采集同步时效慢:离线数仓抽数工具依赖于Sqoop、DataX 等组件,而受限于调度周期,此类工具采集的数据必然有滞后性。
●资源冲突大:离线数仓每日跑批时间跨度大,一般从凌晨到下午5点左右,这将导致跑批和即席查询之间发生资源冲突,影响业务人员的使用体验。
●查询分析慢:在使用离线平台进行自定义统计分析和数据探索时,查询分析响应速度慢、时效性难以保障,严重影响工作效率。
●T+1 延迟高:各业务线对实时数据处理的需求在逐渐增多, T+1 的数据已经无法适应数据快速获取和产生业务价值的诉求。
●报表定制周期长:报表定制化开发有固定的迭代周期,难以满足业务人员对数据的灵活多样的分析探索。
●烟囱效应:定期上报数据时,数据中台需要从多个业务系统中拉取数据。当业务系统发生变更后,会波及上述相关的报送子系统,形成烟囱效应。
技术选型
为了解决上述问题,我们迫切需要一款 MPP 引擎来构建实时数仓。对于新引擎我们有几个基本的要求:首先,需要简单易上手,以便团队快速掌握和使用;其次,需要具备强大的数据导入能力,以便快速高效地导入海量数据;同时,需要兼容离线数仓相关工具,以便与现有的数据处理工具和技术体系无缝衔接;此外,搭建和切换成本也需要低,以便快速部署使用和进行扩缩容;最后,它需要具备较好的并发能力和优异的查询性能,以便支持高并发、复杂查询等业务场景的需求。
在以上选型要求驱动下,我们对目前比较流行的 ClickHouse 与 Doris 进行了系统的调研,其中Apache Doris更符合我们的选型的要求,具体原因如下:
●部署成本低: Doris采用分布式技术架构,部署只需两个进程,不依赖其他系统,在线集群扩缩容,自动副本修复,部署及使用成本较低。
●快速上手使用:Doris采用主流的分区分桶设计思路,索引结构与 MySQL 的思路类似,相关 人员在使用Doris 时无需学习大量的新知识。相比之下,ClickHouse在建库建表需要分别指定类型,使用流程相对比较繁琐,上手难度也比较高。
●工具兼容:业务人员通常使用 TDH 的客户端工具WaterDrop 进行离线数仓查询, Doris 通过标准协议链接可完美兼容WaterDrop, 而 ClickHouse 无法兼容。
●数据生态圈丰富: Doris 数据生态圈丰富,与 Flink、Kafka 等组件结合度较高,同时支持联邦查询,提供了丰富的数据导入和接入方式,可以满足多场景下的数据处理需求。
●高并发能力:我们对 Doris 进行了性能压力测试,在高并发和大数据量的情况下,Doris 表现出较好的性能和稳定性,能够满足不同业务场景的需求。
●社区活跃度高:Doris 社区非常活跃,有大量的开发者和用户参与其中,提供了丰富的技术支持和解决方案。同时 Doris 社区提供了全面的文档和资料,方便用户学习和使用Doris。 此外,SelectDB 为社区提供了一支全职专业的技术团队为社区用户提供服务与支持,任何问题均可得到快速响应。
基于Doris 的实时数据仓库
在离线数仓的基础上,使用 Doris 结合CDH 集群、Airflow 集群搭建了实时数仓,实时数仓的数据来源主要为离线数仓和 MySQL, 使用 Flink CDC 结合 PyFlink (使用 Python 调用 Flink 的API, 简称PyFlink) 将 MySQL 中的数据实时地采集到核心计算引擎Doris 中(后文将详细介绍 ) , 上 层 为 Airflow 分布式调度系统,可以将实时任务进行常规化的调度运维。我们对 Doris引擎进行了基本数仓分层,数据经过各层处理后统一为各场景提供数据服务。
基于 Doris提供的丰富导入方式,我们可以快速将离线数仓中的实时数据清洗整合接入到Doris集群中,实现数据的快速迁移。目前我们已经将基于TDH的查询分析和数据探索服务全部转移到Doris 引擎上,借助 Doris引擎快速计算的能力和优异的查询性能,可以更高效地进行数据处理和分析,业务处理速度和效率得到显著提升。
以某 SQL 为例,该 SQL 主要应用在信贷审批场景。我们对比了原有架构和新架构从十万、千 万,亿级别的三个大表 Join 查询返回速度。结果显示,在过去TDH架构中执行查询需要11分30秒才可返回结果,而基于Doris 的新架构中仅需要1.7秒即可返回结果,速度提升400倍
数据规模:
原有离线数仓:需要11分30秒才可返回结果
基于Doris的新数仓:优化查询平均返回时间仅需1.7秒,有时甚至可以1秒内返回。
更多精彩内容,欢迎观看:
带你读《Apache Doris 案例集》—— 02 河北幸福消费金融基于Apache Doris 构建实时数仓,查询提速400倍!(2):https://developer.aliyun.com/article/1405773