实验7: EMR Spark & Hudi & MSK

本次动手训练营将引导您逐步使用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上的表中。

Cloudformation快速环境构建

如您所见,我们的实验涉及了数据库,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模板大约需要30分钟。完成后您将看见如下创建成功的返回

启动实验

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

  • 导航到Amazon Sagemaker控制台(如下所示,在AWS管理控制台上搜索Sagemaker)

  • 如下所示打开笔记本

  • 按顺序打开笔记本,然后按照笔记本中的说明完成练习。

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