写点什么

基于亚马逊云服务建数据仓库的数据流设计与架构

  • 2021-08-26
  • 本文字数:2510 字

    阅读完需:约 8 分钟

基于亚马逊云服务建数据仓库的数据流设计与架构

本文最初发表于 Medium 博客,经原作者 Abhijit Patil 授权,InfoQ 中文站翻译并分享。


在本文中,我们将介绍使用原生 AWS 服务构建 ETL 流程的众多设计之一,以及如何集成这些设计来构建端到端数据管道。



AWS 数据流(ETL)


在上图中,它代表了数据管道的四个主要方面,即数据摄取(Data Ingestion,E)、数据转换(Data Transformation,T)、数据加载(Data Load,L)和服务(Service,S)。


数据摄取(E)


在将数据从企业内部摄取到 AWS S3 中,还有很多其他模式。在这个流程中,我们代表了使用 HTTP 接口摄取数据的模式之一。其他模式可以使用 AWS 数据迁移服务,详情可参阅:https://aws.amazon.com/cloud-data-migration/


a. 文件上传器 API


HTTPs API 使用托管在 EC2 上的 Spring boot 应用程序来上传/下载数据。这支持数据的多部分上传。


你可以使用 Spring boot 框架来编写文件上传器 API,并将其托管在自动伸缩的 EC2 上。要创建 Java 服务器端的文件上传器程序,请参考这个简单指南:https://spring.io/guides/gs/uploading-files/


要让这个应用程序更具弹性,你可以将 ELB 和 Amazon EC2 Auto Scaling 添加到应用程序前面。


b. 数据移动到 S3


一旦收到数据文件,应用程序将暂时把数据保存在 EBS 卷中,然后使用 AWS SDK,可以把它移动到 S3 存储桶(Staging)。当数据移动到 S3 时,将会引发 S3 事件。通过该事件,可以触发 Lambda 函数,然后通过调用 Step 函数来触发 ETL 工作流。


注:S3 staging 存储桶将主要保存从源接收的原始数据。


数据转换(T)


强烈建议将可能是各种格式(如 JASON、XML、CSV 或任何其他格式)的原始数据转换成统一的数据格式,如数据湖(Data Lake)中的 parquet 格式。这样就能使数据湖的数据的标准化。


将按照下列高级步骤进行数据转换:


在 Step 函数工作流中,所有 ETL 转换阶段将被定义,一旦数据通过 Lambda 函数登陆到 staging S3 存储桶,该工作流就会被触发。工作流的第一阶段将是日期控制检查或业务日期检查,这将使用 Lambda 来完成,它在内部访问 DynamoDB,该数据库将存储日期控制和假日日历表。在上图中用箭头 4、5 和 5a 表示。在执行任何数据操作之前,Step 函数(状态机)的第一步是检查文件的完整性,例如校验和检查、行计数检查等,然后调用 Glue Crawler(爬网程序)来更新 Glue Catalog 中的模式,以获得新的数据。Step 函数的第二步将调用 Glue 作业,该作业将从 S3 存储桶的 staging 层读取数据,并将其转换为 parquet 格式,然后将最终的 parquet 文件写入 S3 持久层(数据湖)存储桶中。


注:一旦所有处理完成,可以调用相同的 Lambda 函数来更新 DynamoDB 中工作流的状态。


数据加载(L)


数据加载是将数据从持久层(数据湖)S3 存储桶加载到 Redshift 中。Redshift 将作为数据仓库或数据集市使用,用于定义域数据模型。


将按照下列高级步骤进行数据加载:


在成功完成 Step 函数的第二步后,将触发 Step 函数的第三步。Step 函数的第三步将触发另一个 Glue 作业(Glue Python shell 作业),它将执行 SQL(来自 Artefact 的 S3 存储桶),将数据从 S3 存储桶复制到 Redshift 表中。一旦数据加载完成,Lambda 将更新 DynamoDB 中工作流的状态。


注:在 SQL 函数中,你可以使用所有的业务逻辑。对于其他需要复杂转换的用例中,你可以调用 Glue Job 并调用 Java/Scala 代码。


错误处理与服务集成


在这种方法中,我们创建了一个通用的 Lambda 函数,如果 Step 函数中的任何步骤失败,就会调用这个函数。然后这个 Lambda 函数更新 Dynamo DB 审计表的状态。该 Lambda 函数参考了 S3 代码 Artefact 存储桶中的代码。


在 DynamoDB 审计表中的每一次插入都会生成一个触发器,该触发器将调用通用错误处理 Lambda,而该触发器又可以调用内部的 API,以提出服务工单(service ticket)或发送关于任何失败/警告的电子邮件。


设计中使用的工具/服务


我们主要使用以下 AWS 原生服务来实现数据管道:


  1. AWS Lambda:这主要用于整合不同的服务。我们不建议在 Lambda 函数中加载大量的业务逻辑。在这个设计中,Lambda 被用于:


捕获 S3 文件生成事件。触发相应的 ETL 工作流程(Step 函数)。捕获 DynamoDB 表中的审计信息。如果需要,触发其他依赖性的 AWS 服务,如 Glue Crawler,Athena 查询,API 网关等。


  1. AWS Step 函数:这是一个简洁的图形化表示,用来定义作业的子任务的相互依赖关系。


帮助定义/执行工作流中特定数据文件的不同任务。不同的任务可以是胶水作业(glue job)或 Lambda 函数。


  1. AWS Glue Job:这主要用于计算/转换作业。


从 S3 staging 层存储桶中读取数据。将数据文件转换为 parquet 格式。触发 Redshift 的 SQL 查询,将 S3 存储桶加载数据或从 S3 存储桶卸载数据。


  1. AWS DynamoDB:在这个设计中,我们用来保存与 ETL 作业相关的元数据,并维护作业执行的审计。这有助于维护 ETL 管道元数据。ETL 管道元数据可以是:

  • 每个数据文件的日期控制信息;

  • 每个数据文件的假日日历信息(工作流/Gluejob);

  • 胶水作业依赖性的元数据;每个数据文件/工作流/胶水作业的审计信息。


  1. AWS Redshift:用于定义域数据模型,在该模型中可以建立 Star 或 snowflake 模式来表示事实和维度。


这将主要用于创建数据仓库/数据集市。


  1. https://aws.amazon.com/cloudwatch/:用于监控作业的执行情况并发出警报。


捕捉跨不同工作流和 AWS 服务的日志信息。在出现错误/警告等情况下生成 CloudWatch 事件/警报。


  1. Amazon API Gateway


调用企业内部的 API 来发送任何操作事件/信息,如故障、警告、操作统计等。


  1. Amazon EC2/EBS:


托管文件上传器应用程序和服务,将数据传输到 S3。EBS 将作为文件上传器应用程序的存储平台,并临时存储数据文件。


总结


这是在 AWS 上实现数据管道的一种方法,通过设计和使用无服务器或托管服务的 AWS 原生服务,可以实现弹性。


作者介绍:


Abhijit Patil,云数据工程和架构总监,擅长构建企业规模的产品和服务,在各种技术和金融领域拥有 20 多年的丰富经验。

Hukumchand Shah: 工程副总裁,专业从事云数据工程,大数据、微服务、领导力和健康爱好者。


原文链接:


https://medium.com/ibrains-cloud-data-engineering/aws-data-pipeline-design-and-architecture-fbfe4b3f5849

2021-08-26 12:143022

评论

发布
暂无评论
发现更多内容

macbook屏幕亮度调整工具:Lunar Pro for Mac破解版 附Lunar Pro注册机

Rose

Mac屏幕亮度调整工具 Lunar Pro破解版 Lunar Pro注册机 Lunar Pro下载

天翼云以科技硬实力亮相第八届IDC中国数字化转型年度盛典

Geek_2d6073

华为云11.11 PaaS产品|抢救未来增长策略:稳定、强力的云服务限时优惠进行中

平平无奇爱好科技

数智化赋能公立医院干部管理 激发组织活力

用友BIP

干部管理

Comsol Multiphysics for Mac(建模仿真软件) v6.2中文版

展初云

Mac COMSOL Multiphysics 物理场仿真软件

什么年代了,还不会 CI/CD 么?

极狐GitLab

CI/CD

财务共享中心建设项目的变革管理与沟通机制

用友BIP

财务共享

IBM SPSS Statistics 27 Mac(spss统计分析软件)

展初云

Mac mac数据分析统计软件 IBM SPSS Statistics 27

Moho Pro 14 for Mac(2D动画制作软件)附注册机v14.1激活版

Rose

Moho Pro 14下载 Moho Pro 14中文版 Moho Pro 14破解 二维动画制作

为什么OpenAPI是未来企业数字化转型的决定性因素?

平平无奇爱好科技

自然环境渲染工具Terragen 4 for mac破解版 附Terragen永久证书

Rose

Terragen 4破解 自然景观生成工具 Terragen 4下载 Terragen许可证书

分布式基础概念-选举算法

派大星

分布式 Java 面试题

IBM SPSS Statistics v27.0.1中文破解版 spss详细图文安装教程

Rose

spss数据统计 IBM SPSS Statistics 27

强大的鼠标增强软件BetterMouse 激活版最新中文

胖墩儿不胖y

Mac软件 鼠标增强工具 鼠标管理工具

​🔒 一文带你了解多文件混淆加密

中国唯一!华为入选Gartner®企业低代码应用平台魔力象限

平平无奇爱好科技

ShareMouse 破解 for Mac共享鼠标工具 ShareMouse下载安装

Rose

mac软件下载 ShareMouse 破解版 Mac鼠标共享工具 ShareMouse下载

「智造」第9期:一招砍成本、四档提效率,“智造”下半场如何仗剑破局?

用友BIP

智能制造

华为云11.11 PaaS产品|坐看云卷云舒:运维开发一步到位

平平无奇爱好科技

FonesGo iPhone Unlocker for Mac(iPhone解锁工具)

Rose

iPhone解锁 FonesGo iPhone Unlocker Mac解锁软件

GitKraken for Mac(Git客户端) v9.10中文版

展初云

git Mac软件 GitKraken

BetterMouse for Mac(鼠标增强软件)

展初云

Mac BetterMouse Mac鼠标辅助软件

万能蓝光播放器:Apeaksoft Blu-ray Player for Mac

Rose

Mac蓝光播放软件 Apeaksoft Blu-ray Player

Wireshark的捕获过滤器

小魏写代码

华为云11.11 PaaS产品|云端援手:智能枢纽应对数字资产挑战

平平无奇爱好科技

项目管理体系文件代码评审规范

金陵老街

软件开发文档

Mac文本对比工具UltraCompare中文版 支持M/intel

Rose

文件对比工具 UltraCompare 中文版 UltraCompare 下载

强大的Git客户端Tower 密钥激活版最新

mac大玩家j

Mac软件 Git客户端

macbook翻译软件就用Translatium for Mac

Rose

翻译软件 Translatium中文版 Translatium下载 Translatium Mac Mac翻译工具

华为云11.11 PaaS产品|精密云工程:智能激活业务速率限时优惠倒计时

平平无奇爱好科技

基于亚马逊云服务建数据仓库的数据流设计与架构_架构_Abhijit Patil_InfoQ精选文章