- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
NerdWallet 的使命是为生活中的所有财务决策提供清晰的信息。 这涵盖了一系列不同的主题:从选择合适的信用卡到管理您的支出,到找到最好的个人贷款,再到为您的抵押贷款再融资。 因此,NerdWallet 提供了跨越众多领域的强大功能,例如信用监控和警报、用于跟踪净值和现金流的仪表板、机器学习 (ML) 驱动的建议,以及为数百万用户提供的更多功能.
为了为我们的用户构建一个一体化和高性能的体验,我们需要能够使用来自多个独立团队的大量不同的用户数据。 这需要强大的数据文化以及一套数据基础设施和自助服务工具,以实现创造力和协作.
这篇文章中我们阐述了一个用例,该用例说明 NerdWallet 如何通过构建支持来自整个公司的流数据的无服务器 Serverless 管道来扩展其数据生态系统。 我们迭代了两种不同的架构,并且说明在初始设计中遇到的挑战,以及我们在第二个架构中使用 Apache Hudi 和其他 AWS 服务所获得的收益.
NerdWallet 收集了大量的支出数据。 此数据用于为用户构建有用的仪表板和见解。数据存储在 Amazon Aurora 集群中。 尽管 Aurora 集群作为联机事务处理 (OLTP) 引擎运行良好,但它不适合大型、复杂的联机分析处理 (OLAP) 查询,因此我们无法向分析师和数据工程师公开直接的数据库访问权限。数据所有者必须使用只读副本上的数据来解决此类请求。 随着数据量以及数据消费者和请求的多样性的增长,这个过程变得更加难以维护。 此外数据科学家大多需要从 Amazon Simple Storage Service (Amazon S3) 等对象存储访问数据文件.
我们决定探索所有消费者都可以使用开放标准工具和协议安全且可扩展地独立完成他们自己的数据请求的替代方案。 从 数据网格 范例中汲取灵感,我们设计了一个基于 Amazon S3 的 数据湖 ,将数据生产者与消费者分离,同时提供自助服务、安全合规且可扩展的易于配置的工具集.
下图是初始设计的架构 。
该设计包括以下关键组件:
该架构适用于小型测试数据集,然而团队很快就遇到了大规模生产数据集的问题.
团队遇到了以下挑战 。
由于初始架构设计的所有这些限制,我们决定重新设计一个真正的增量处理架构 。
下图展示了我们重新设计的架构。为了支持实时用例,我们在架构中添加了 Amazon Kinesis Data Streams、AWS Lambda、Amazon Kinesis Data Firehose 和 Amazon Simple Notification Service (Amazon SNS).
新引入的组件如下:
SELECT ID, SUM(AMOUNT) SPENDING
FROM "{{DATABASE}}"."{{TABLE}}"
WHERE CATEGORY IN (
'ENTERTAINMENT',
'SOME_OTHER_CATEGORY')
AND ID_BUCKET ='{{ID_BUCKET}}'
GROUP BY ID;
采用一种无服务器流处理架构,该架构可以在我们数据湖的新鲜度几分钟内扩展到每秒数千次写入。在目前的规模下,Hudi 作业每秒处理每个 AWS Glue Worker 大约 1.75 MiB,它可以自动向上和向下扩展(得益于 AWS Glue 自动扩展)。 由于 Hudi 的增量更新与我们的第一次架构相比,在不到 5 分钟的时间内端到端新鲜度有了显着改善.
借助 Amazon S3 上的 Hudi,我们已经建立了一个高杠杆基础来个性化我们的用户体验。 拥有数据的团队现在可以通过千篇一律的解决方案中内置的可靠性和性能特征在整个组织内共享他们的数据。 这使我们的数据消费者能够构建更复杂的信号,为生活中的所有财务决策提供清晰度.
最后此篇关于基于ApacheHudi构建Serverless实时分析平台的文章就讲到这里了,如果你想了解更多关于基于ApacheHudi构建Serverless实时分析平台的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我是一名优秀的程序员,十分优秀!