对于从事数据分析的小伙伴们来说,最头疼的莫过于数据处理的阶段。在我们将数据源的原始数据导入数据仓储进行分析之前,我们通常需要进行ETL流程对数据格式进行统一转换,这个流程需要分配专业数据工程师基于业务情况完成,整个过程十分耗时耗力,而且往往不能获取实时的最新数据。
在本系列的上篇文章中,我们已经介绍可在亚马逊云科技上通过 Aurora zero-ETL 与 Amazon Redshift 的无缝集成的解决方案,将数据库内的交易数据与数据仓储中的的分析功能自动结合在一起,从而简化数据库和数据仓储之间定制化 ETL 管道的搭建与管理工作。架构图如下:
在下篇中我们将介绍利用MySQL客户端对RDS数据中的修改,并在RedShift数据仓库中查看从RDS数据库中经过ETL导入到数据仓库的数据,并对ETL任务进行监控。
方案所需基础知识
什么是 zero-ETL ?
服务之间直接集成,不需要使用额外组件完成数据 ETL 的工作。把各种各样的数据都连接到执行分析所需要的地方,实现数据平滑“无感”的流动。它可以帮助用户最大限度地减少甚至消除构建 ETL 数据管道的复杂性。zero-ETL 的主要优势包括:
- 提高敏捷性。简化了数据架构并减少了数据工程的工作量。它允许增加新的数据源,而无需重新处理大量数据。这种灵活性增强了敏捷性,支持数据驱动的决策和快速创新。
- 成本效益。利用云原生且可扩展的数据集成技术,使企业能够根据实际使用情况和数据处理需求来优化成本。组织可以减少基础设施成本、开发工作和维护费用。
- 实时洞察。传统的 ETL 流程通常涉及定期批量更新,导致数据可用性延迟。另一方面,Zero-ETL 提供实时或近实时的数据访问,确保为分析、AI/ML 和报告提供更新鲜的数据。您可以获得更准确、更及时的用例洞察,例如实时仪表板、优化的游戏体验、数据质量监控和客户行为分析。组织可以更有信心地进行数据驱动的预测,改善客户体验,并在整个企业中推广数据驱动的见解。
什么是 Amazon Redshift Serverless?
Amazon Redshift Serverless 让您可以更轻松地运行和扩展分析,而无需管理数据仓库基础设施。 借助 Amazon Redshift Serverless,数据分析师、开发人员和数据科学家现在可以使用 Amazon Redshift Serverless 在几秒钟内从数据中获取见解,方法是将数据加载到数据仓库中并从中查询记录。Amazon Redshift Serverless 会自动豫园和扩展数据仓库容量,以提供快速的性能,满足苛刻且不可预测的工作负载。你只需为使用的容量付费。你可以从这种简单性中受益,而无需更改现有的分析和商业智能应用程序。Amazon Redshift Serverless 主要优势包括:
- 在几秒内开始分析。通过快速入门并对所有数据进行实时或预测性分析,专注于获得见解,而不必担心管理数据仓库基础设施。
- 体验始终如一的高性能。支持在查询复杂性、频率、ETL (提取、转换、加载) 或控制面板使用模式等维度上智能、主动并自动扩缩动态工作负载,以提供量身定制的性能优化。
- 节省成本并控制预算。只需按每秒的使用量付费,当数据仓库处于空闲状态时不支付任何费用。调整工作负载所需的性价比目标,以保持稳定的性能并控制预算。
什么是 Amazon Aurora Serverless?
Amazon Aurora Serverless 是 Amazon Aurora 的一种按需自动扩展配置版本。Amazon Aurora Serverless 会根据应用程序的需求自动启动、关闭以及扩展或缩减容量。可在云中运行数据库,而无需管理任何数据库实例。还可以在现有或新的数据库集群中将 Aurora Serverless v2 实例与预置实例搭配使用。Amazon Aurora Serverless 其主要优势包括:
- 高度可扩展。只需不到一秒的时间,即可瞬间扩展到数十万个事务。
- 高度可用。提供所有的 Aurora 功能,包括克隆、全球数据库、多可用区部署以及只读副本等,满足业务关键型应用程序的需求。
- 经济高效。以极为精细的横向增量,确保恰好提供所需的数据库资源量,并且仅为使用的容量付费。
- 简单。不再需要进行复杂的数据库容量预置和管理。数据库将会扩展,以匹配应用程序的需求。
- 透明。立即扩展数据库容量,而不中断传入的应用程序请求。
- 持久。使用分布式、容错、自我修复的 Aurora 存储,防止数据丢失,使您的数据在一个区域的三个可用区(AZ)中持久可用。
本实践包括的内容
1. 通过MySQL客户端连接MySQL服务器,并执行数据/表更新DDL、DML操作
2. 在RedShift数据仓库中,查看从MySQL经过ETL导入的数据信息,验证一致性
3. 通过云端控制台监控ETL任务指标、运行状态
项目实操步骤
项目前期准备
1. 我们需要提前在亚马逊云科技控制台中,进入RDS服务主页创建Amazon Aurora Serverless v2数据库
2. 然后进入RedShift服务主页,创建Amazon Redshift Serverless输出仓储
通过 Amazon EC2 控制台创建 EC2 并安装 MySQL 客户端
3. 通过亚马逊云科技控制台,进入EC2服务主页
4.点击左侧菜单栏的实例选项,点击右侧启动新实例
5. 我们进入实例创建页面,我们根据图中所示选择OS类型、CPU架构类型
6. 选择实例大小类型”t2.micro“, 选择SSH登录秘钥,以及配置网络环境
7. 在网络配置选项中,我们选择VPC、子网、为EC2开启公网IP,选择安全组,并为服务器配置磁盘
8. 实例创建成功后,我们点击连接,通过SSH进入服务器的Shell,命令行
9. 在服务器Shell中,我们通过以下命令安装MySQL客户端
sudo yum upgrade
sudo yum install -y mariadb105.x86_64
10. 我们首先获取RDS数据库的读写URL节点
11. 再通过MySQL客户端连接MySQL数据库,需要把"[mysql endpoint here!]"替换成RDS读写URL节点
mysql -h [mysql endpoint here!] -P 3306 -u awsuser -p
在MySQL中更新表/数据并检查下游数据
12. 我们利用MySQL客户端执行如下DDL和DML操作,分别创建数据库”zeroetl“,创建新表”timeseries“和插入一条数据”abcd“
create database zeroetl;
use zeroetl;
CREATE TABLE timeseries (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
random_chars CHAR(5)
);
INSERT INTO timeseries (random_chars) VALUES ('abcd');
13. 接下来我们进入RedShift的查询控制台,执行SQL查询语句
14. 我们运行以下SQL命令查询从MySQL中通过ETL同步到RedShift的数据
set search_path to zeroetl;
select *, (CURRENT_TIMESTAMP - timestamp) as latency_secs from timeseries order by timestamp desc;
15. 我们再通过其他的DML/DDL操作在MySQL中对数据进行修改
use zeroetl;
create table schema_evolution(
id BIGINT AUTO_INCREMENT PRIMARY KEY,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
i integer,
c char(5)
);
insert into schema_evolution(i, c) values(1, 'abcde');
insert into schema_evolution(i, c) values(2, 'abcde');
16. 通过以下命令验证ETL数据同步的一致性,可以看到数据/表已经变成我们刚刚修改的内容了
set search_path to zeroetl;
select * from schema_evolution;
17. 数据从MySQL到RedShift的同步会有一些延迟,可通过下述 SQL 查看系统表集成同步过程,确定同步是否完成
select * from SVV_INTEGRATION_TABLE_STATE where table_name = 'schema_evolution';
通过控制台监控查看ETL任务健康指标和运行状态
18. 在RedShift主页的控制台中,我们在左侧进入” 零ETL集成“功能界面,点击我们在本系列上篇中创建的Zero-ETL任务
19. 进入到任务页面中,我们就可以看到零ETL任务的各项具体参数信息,以及下方的监控指标、运行状态了
以上就是为亚马逊云科技上的RDS数据库创建与数据仓库RedShift Zero-ETL无缝集成方案的下篇内容。欢迎大家关注小李哥和我的亚马逊云科技服务深入调研系列,不要错过未来更多国际前沿的AWS云开发/云架构方案。