近年来,各级政府和企业响应数字化转型的号召,都已开始或者即将开始数字化转型。各类企业通过前期的业务线上化、信息化,积累了大量数据,而数字化转型就是要聚合这些数据,进行深入挖掘分析,用数据来驱动业务,用数据来支撑决策、用数据来推动业务和商业模式创新、推动业务流程优化,进而实现降本增效。
要实现数据价值,建设数据仓库是在数字化转型过程中不得不面对的一项任务。数据仓库汇聚各个业务部门数据,避免数据孤岛,使数据真正成为整个企业的数据,而不是某个部门的数据。
数据仓库的技术架构包括离线数仓和实时数仓或准实时数仓。离线数仓已发展多年,当前已无法完全满足企业在竞争中脱颖而出的发展需求,实时数仓越来越多成为企业建设数据仓库的首选。然而由于实时数仓对实时性的严格要求,实现实时数仓的技术难度远远大于离线数仓,一些现有的实时数仓架构,只能实现准实时,而且无法解决削峰平谷、无感扩展等问题。
本文为大家提供一种高效的实时数仓架构:基于亚马逊云科技 Serverless 架构的实时数仓架构。
实时数仓常见场景与亚马逊云科技的做法赏析
我们先来赏析一下常见的实时数仓场景,以及亚马逊云科技Serverless架构的实时数仓成功落地的案例:
1、APP 埋点数据实时采集与分析(比如:实时智能推荐、实时欺诈检测)
在此,我们以智能推荐场景为例:根据用户历史的购买或浏览行为,通过推荐算法预测用户兴趣与需要,并从海量推荐资产(可能是短视频、广告、动图)中挑选最合适的进行推送。推荐系统在飞速发展,对时延的要求也越来越苛刻和实时化。往往业务方希望客户在使用App(或浏览网页)时,就能基于当前行为和历史数据进行动态推荐。
数据来源一般为App埋点采集和历史浏览数据、消费数据、和广告资产等。
常见做法:流式ETL与数据同步与传输可能会用到Flume、Kafka等工具,计算有可能会采用ClickHouse、Flink、Spark等大数据计算工具。数据源端和数据消费端就五花八门一些,在此不作展开。(同样的技术架构也出现在实时欺诈检测等场景中)
我们来看一下亚马逊云科技的案例:使用 Amazon Kinesis Data Streams (流式数据接入产品,Amazon KDS)实时接入 APP 埋点数据到 Amazon Redshift(云原生数据仓库) 中,用于指标分析和 BI 展现。支持高达30万/秒的数据摄入速率,延迟小于10秒;在数据实时摄入数仓的同时,支持高并发实时查询,支持大宽表多表关联,复杂聚合等各种 SQL 查询,查询结果秒级响应。
2、RDBMS CDC+KDS+Amazon Redshift Serverless(实时BI报表、复杂事件处理)
在这个案例中,主要采集源头日志数据和 RDS 结构化数据的变更数据动态捕获(Change Data Capture,CDC)。这是一个数据仓库非常常见的需求,外部数据库系统(账户、存款、制造、人力资源等)作为数据源时,业务团队需求需要CDC日志数据动态接入数据仓库,实现实时的分析需求,比如实时BI报表、复杂事件处理(应急响应)。
CDC日志数据通过 Amazon Kinesis 实时发送到 Amazon KDS,经过流处理后,结果写入 RDS,并提供 API 的方式供第三方查询。同时,Amazon Redshift可以直接消费 Kinesis 数据,用于查询分析,整体延迟小于30秒。
CDC日志采集方式支持多种,包括 Amazon DMS、Debezium、Flink CDC、Canal 等,采集数据写入Kinesis后,接着使用 Amazon Redshift Streaming Ingestion 功能将CDC数据实时写入 Amazon Redshift。
图2 实时数仓--RDBMS CDC+KDS+Amazon Redshift Serverless
经典解决方案—借助Amazon Redshift打造云原生数仓
在继续开展下文前,需要介绍一个无法绕过的产品——Amazon Redshift ,一种快速、可扩展、安全且完全托管的云数据仓库,可以帮助用户通过标准 SQL 语言简单、经济地分析各类数据。
无论是构建传统数据仓库架构还是实时数仓架构,借助Amazon Redshift用户都可以一站式的进行部署。相比其他云数据仓库,Amazon Redshift 可实现高达三倍的性能价格比。数万家客户正在借助 Amazon Redshift 每天处理 EB 级别的数据,借此为高性能商业智能(BI)报表、仪表板应用、数据探索、实时分析和等分析工作负载以及机器学习、数据挖掘提供强大动力。Amazon Redshift支持ACID事务特性、ANSI SQL标准、JDBC/ODBC 连接协议的 MPP 架构列式存储数据仓库。Amazon Redshift 不仅可以基于自身内部表进行数据分析,还可以查询 Amazon S3 中的数据,S3 是一项具备极致弹性的对象存储,它已经成为了云上数据湖事实上的标准,既可以存储结构化数据,也可以是半结构化数据、非结构化数据。Redshift与S3 可以无缝结合,实现智能湖仓架构。
图3 Amazon Redshift Serverless 架构
实时数仓架构要解决的问题
良好的实时数仓架构,可以解决以下四方面的问题:数据实时接入、数据实时分析、数据实时输出。
Serverless架构不仅弥补了传统离线数仓的不足,而且完美解决了上述四方面的问题,先看下整体实时数仓架构图:
Serverless 实时数仓架构采用 Amazon KDS(Amazon Kinesis Data Streams) + Amazon Redshift Serverless+Redshift ML+S3 技术产品组合,KDS 负责数据的实时接入,Redshift Serverless+Redshift ML+S3 负责"智能湖仓"的落地,实现数据实时分析、实时输出、实时预测。同时,Redshift Serverless 架构,运维简单,按需计费,降本增效,将客户从纷繁复杂的架构搭建、监控、运维中解放出来,专注于数据查询分析,数据价值挖掘,实现数据驱动决策。
图5 Amazon Database Migration Service (Amazon DMS) 迁移数据到智能湖仓
对于非结构化数据,传统实时接入方式是扫描指定目录,将新增文件写入文件系统(HDFS、Amazon S3 等),然后开发程序解析文件,写入数据库表中。然而,采用亚马逊云科技提供的 DMS+S3+Redshift 方式,无需开发数据解析程序,只需通过简单的配置,即可实现数据入写 S3,Redshift 可与 S3 完美集成,即数据进入 S3,即可在 Redshift 中查询分析。
Amazon Redshift ML 使 SQL 用户可以轻松地使用熟悉的 SQL 命令创建、训练和部署机器学习模型。通过使用 Amazon Redshift ML,可以使用 Redshift 集群中的数据来通过 Amazon SageMaker 训练模型。随后,模型将会本地化,并可在 Amazon Redshift 数据库中进行预测。
借助 Amazon Redshift ML,无需移动数据或学习新技能,即可利用 Amazon SageMaker 这种完全托管的机器学习服务。借助由 Amazon SageMaker 提供支持的 Amazon Redshift ML,使用 SQL 语句从 Amazon Redshift 中的数据创建和训练机器学习模型,然后将这些模型用于多种使用案例场景,例如直接在查询和 BI 报表中进行流失预测和欺诈风险评分。用写 SQL 语句的方式,开发机器学习功能,底层各种机器学习算法的复杂性,交由 Amazon Redshift ML 解决,客户可以将更多的精力专注在业务上面。
Serverless 实时数仓架构的优势
成熟的技术架构,可以大大降低企业的人力和财力成本。传统的实时数仓架构(采用托管服务器的方式),无法实现削峰平谷。以电商行业为例,实时数仓架构的服务器资源,必须能够应对数据高峰(各类大型活动、促销与其他不可预测的工作负载)带来的压力,所以硬件采购往往是按资源峰值采购的,结果是大部分资源在大部分时间都是闲置的,无形提高了企业成本;传统实时数仓架构,无法实现无感扩展,即服务器集群节点的增加和减少,会增加运维人员工作量,可能会带来业务的暂停。总的来说,Serverless 实时数仓架构的优势包括如下几点: