本次动手训练营将引导您逐步使用Apache Hudi在S3 Data Lake中对Parquet格式化的数据执行插入,加插和删除操作。我们将使用Amazon Aurora MySQL模拟业务数据库,它将作为源数据库;使用AWS DMS作为增量和全量的数据同步工具;使用Amazon MSK作为消息队列并使用Amazon EMR上的spark streaming消费数据,您将会尝试这些数据增量的被处理到Hudi表中…
以下是您将使用的数据管道的体系结构流程。它首先使用Amazon Data Migration Service(DMS)从OLTP数据库(例如Amazon Aurora)中提取数据。 DMS以Parquet格式将数据文件存储到S3数据湖原始层的存储桶中。 DMS任务的配置方式是将全量加载以及更改数据捕获都拉到原始S3存储桶。然后,运行Amazon EMR集群的Spark会读取数据,并将其作为Apache Hudi数据集写入数据湖分析层中的S3存储桶。 Hudi可以在两种不同的存储类型中写入数据,并在三种不同的视图中公开所写入的数据:
a.)读取的优化视图,可以使用在Amazon EMR上运行的Presto或用于机器学习需要的工具查询
b.)可以支持近实时报表仪表板的视图
c.)可用于填充数据仓库(例如Redshift)的增量视图

在本实验中,我们将对Amazon S3上的数据集执行增量数据处理。数据湖的源数据来自Amazon Aurora数据库。我们将使用Amazon数据迁移服务(DMS)来提取全部负载,并将数据捕获(CDC)从Aurora集群(源)更改到Amazon S3(目标)。当文件到达S3时,将触发AWS Lambda函数,该函数从文件中读取数据并将其置于Amazon MSK主题中。 Spark Streaming 定义的作业从Amazon MSK主题读取数据,并将数据以Apache Hudi格式写入S3上的表中。

如您所见,我们的实验涉及了数据库,Kafka,EMR,S3等多个基础设施,为简化我们的部署过程,我们将使用Cloudformation进行环境搭建,这大概需要30分钟
实验在Cloudformation堆栈部署环境的过程中涉及了以下自动化脚本,如您想要了解环境搭建的过程请您查阅如下的脚本代码及注释
| 脚本文件 | 功能概述 |
|---|---|
| hudi-workshop-template.yaml | Cloudformation自动化部署文件 |
| sagemaker_lifecycle.sh | 配置笔记本环境,调用脚本创建lambda,创建kafka topics,RDS加载数据等 |
| KafkaClientInstall.sh | 配置kafka客户端,运行数据管道创建脚本 |
| InstallHudiSparkRPMs.sh | 脚本在运行Spark 的EMR创建后自动运行,作用于Amazon EMR上安装Hudi补丁 |
| InstallHudiPrestoRPMs.sh | 脚本在运行Presto 的EMR创建后自动运行,作用于Amazon EMR上安装Hudi补丁 |
| salesdb.sql | Copy SQL Script |
| sales_order_detail.schema | Copy AVRO schema to local bucket |
| create-lambda-function.py | 在sagemaker笔记本中运行,create lambda function |
| get-stack-info.py | 获取环境中 (MSK, Aurora) 信息 |
| create-kafka-topics.py | create the kafka topics |
Cloudformation堆栈脚本逻辑如下图:

您可以根据自己的情况选择使用您的AWS中国区域账户或AWS海外区域账户进行实验,我们为此创建了不同版本的CloudFormation代码,如果您还没有AWS账户,请注册账户,如果您已经拥有AWS账户,请选择您进行实验的账号归属地以调研不同的CloudFormation模板:
在启动cloudformation模板之前,请确保您拥有一个 EC2秘钥 在将运行模板的AWS区域中进行准备,以便模板中的资源与您的秘钥配对。
启动以下CloudFormation模板,以在您的账户中为此动手训练营创建必要的AWS环境资源。
如果您现在的是中国区账户,可以选择的区域是cn-northwest-1 中国 (宁夏)。
如果您选择的是海外账户,支持的区域包括欧盟(爱尔兰),美国东部(弗吉尼亚北部),美国东部(俄亥俄州),美国西部(俄勒冈),亚太地区(东京)和亚太地区(悉尼)
| 账户所属 | 实验模板 |
|---|---|
| 中国区域账户 | ![]() |
| 海外区域账户 | ![]() |
请保留其余模板参数值作为默认值。

现在您完成账号的登录、完成了Cloudformation的部署并查看了几个实验的大致内容,请按照以下说明启动您的实验




现在,让我们暂时离开这个页面,跳转到笔记本中继续我们的实验学习
