WeLab是一家领先的金融科技公司,专注于通过定制化服务向合作伙伴提供金融智能解决方案,助力他们在金融创新领域取得突破。WeLab拥有独特的风险管理技术,能够高效整合和分析移动设备上的大数据,并据此对用户风险进行分类,从而快速做出决策。为了实现秒级决策,我们在数据处理的实时性、准确性及安全性方面提出了更高的要求。因此,我们引入了Apache Doris数据库,使其成为我们大数据平台的核心组成部分之一。
WeLab的实时大数据平台是一个综合性的系统,涵盖了数据实时采集、存储、集成、挖掘、分析和可视化等功能。它具备自动化管理、流程化操作、标准化管理和智能化分析的特点,能够支持灵活、敏捷和低成本的应用场景,并能快速迭代更新。
在大数据平台初期,我们主要依赖Hadoop技术生态系统,通过离线计算提供分析服务。然而,Hadoop技术栈在实时性方面表现欠佳,且基于该技术栈开发报表的成本较高,不够灵活。此外,传统的BI报表开发周期长,需要全面的架构设计和技术开发,这使得新需求的开发十分耗时,增加了IT部门的工作压力。运营人员无法实时获取用户行为数据,难以及时调整产品和业务策略。
为了解决这些问题,我们引入了实时数据分析技术和自助BI工具。自助BI更加灵活,易于使用,即使不具备IT背景的业务分析师也能轻松操作,更好地满足数据分析需求。我们对市场上的MPP执行引擎进行了调研,包括Kudu+Impala、Greenplum和Apache Doris。经过全面对比分析,我们最终选择了Doris作为实时大数据平台的底层存储。
利用Doris的不同数据模型,我们设计了事件表和维度表。事件表采用了Duplicate模型,无主键,可根据特定字段重复存储数据;维度表则采用了Uniq模型,设定唯一键,支持覆盖操作。这种简洁的设计简化了数据同步过程,使业务方能够更便捷地进行数据分析。
以下是一个事件表的建表示例。通过自助BI界面,只需拖拽即可生成底层SQL代码。这大大提高了工作效率。
在使用Doris构建实时报表的过程中,我们总结了一些实践经验: 1. 分区与分桶:Doris支持关键字Partition进行分区和Distributed进行分桶,优化了大表查询性能。选择合适的分区和分桶字段至关重要,否则可能会影响查询效果。 2. 前缀索引:优化建表语句中的AGGREGATE KEY、UNIQ KEY和DUPLICATE KEY,有利于前缀索引的使用。 3. 并发数:调整并发数和分桶数可以优化查询性能。并发数的计算公式为(分桶数 * 分区数)/ 机器数。 4. Colocate Join:Doris支持Colocate Join,无需数据在网络间传输,性能更优。
我们对Doris的性能进行了多次测试,涵盖多种场景,如关联查询、参数调整、Colocate Join、机器配置提升等。测试表明,Doris在查询性能方面表现出色。
借助Doris强大的查询能力,我们构建了一个自助BI系统。业务人员可以快速获得所需的数据分析结果,大幅降低了开发和维护成本。
在互联网金融APP面临高昂获客成本的问题时,有效的用户行为分析显得尤为重要。通过分析用户行为转化模型(如漏斗、留存率等),我们可以洞察增长点并指导产品改进。WeLab的实时大数据平台经历了三个阶段:离线计算阶段、HBase阶段和Doris阶段。
在早期,我们通过Hadoop技术生态系统计算用户行为转化模型。这种方法时效性差,通常需要一天的时间,无法满足运营人员的即时需求。
为了提高时效性,我们采用了HBase,并结合其独特结构构建了一个伪Bitmap数据结构。虽然这种方法解决了部分问题,但在功能上仍存在不足,尤其是在功能性能方面。
为了解决HBase的性能问题,我们调研了支持Bitmap数据结构的开源大数据存储系统,最终选择了Apache Doris。通过建表、数据导入、数据格式转换和SQL查询,我们重构了用户行为转化分析功能。Doris的Stream Load功能表现优异,支持实时数据导入。然而,在实际应用中需要注意内存消耗的问题,建议在正式上线前进行充分的功能测试。
我们的表结构借鉴了HBase的Rowkey设计,包括表、字段、值和时间等关键要素。
我们采用Stream Load方式导入数据,这种方式能够很好地适配数据总线和数据工坊。尽管如此,在实际应用中需要注意内存消耗问题。
导入的数据按行存储,需要将不同列转换为Bitmap结构中的信息。
通过SQL查询可以在数据存储底层完成Bitmap的交集运算。Doris的Bitmap查询功能强大,基本能够实现秒级响应。
本文介绍了WeLab如何整合Apache Doris引擎,并探讨了我们在平台搭建过程中遇到的问题及其解决方法。Hadoop生态虽然仍是大数据技术的基础,但随着技术进步,MPP引擎代表了大数据未来的发展趋势。Apache Doris作为MPP引擎的优秀代表,能够更好地满足当前互联网业务的快速迭代需求。希望各技术专家共同努力,推动技术不断进步。
作者:黄文威,WeLab架构工程师