借助可扩展的企业级提取、转换、加载(ETL)解决方案,解锁高效的数据工作流程并更快获得见解
本指南有助于处理数据消费需求与常见 ETL 实践执行的低级数据处理活动之间的差距。对于使用基于 SQL 的数据管理系统的组织来说,适应现代数据工程实践可能会拖慢从数据中获取强大见解的进度。本指南提供了一种质量认知设计,通过开源数据框架 Arc 实现以用户为中心的 ETL 方法,从而提高数据处理效率。该指南加速了与 ETL 实践的交互,简化了流程并提高了抽象级别,从而统一批处理和流处理中的 ETL 活动。
我们还提供使用高效计算实例(例如 AWS Graviton 处理器)进行优化设计的选项,使您能够优化在 Amazon EKS 上大规模运行 ETL 任务的性能和成本。
请注意:[免责声明]
架构图
[架构图描述]
第 1 步
通过带有应用程序负载均衡器源的 Amazon CloudFront 端点与 ETL 开发和编排工具进行交互,在客户端和 ETL 工具端点之间提供安全连接。
第 2 步
开发、测试和调度处理批处理和流数据的 ETL 作业。ETL 进程和数据存储之间的数据流量流经由 AWS PrivateLink 提供支持的 Amazon Virtual Private Cloud(Amazon VPC)端点,而无需离开 AWS 网络。
第 3 步
JupyterHub 集成式开发环境(IDE)、Argo Workflows 和 Apache Spark Operator 作为容器在 Amazon Elastic Kubernetes Service(Amazon EKS)集群上运行。JupyterHub IDE 可以与源代码存储库(例如 GitHub)集成,以跟踪用户所做的 ETL 资产更改。这些资产包括 Jupyter Notebook 文件以及要与 Arc ETL 框架一起运行的 SQL 脚本。
第 4 步
更新源代码存储库中的 ETL 资产,然后上传到 Amazon Simple Storage Service(Amazon S3)存储桶。同步过程可以通过源代码存储库中的更新启动或手动执行的自动持续集成和持续部署(CI/CD)管道来实现。
第 5 步
您可以选择更改从代码存储库上传到 S3 ETL 资产存储桶的 Docker 构建源代码。它激活 AWS CodeBuild 和 AWS CodePipeline CI/CD 管道,以自动重建 Arc ETL Framework 容器映像并将其推送到 Amazon Elastic Container Registry(Amazon ECR)私有注册表。
第 6 步
通过 Argo 工作流调度 ETL 作业,以在 Amazon EKS 集群上运行。这些作业会自动从 Amazon ECR 中提取 Arc 容器映像,从构件 S3 存储桶下载 ETL 资产,并将应用程序日志发送到 Amazon CloudWatch。VPC 端点可安全访问所有 AWS 服务。
第 7 步
作为经过身份验证的用户,您可以在 JupyterHub IDE 中以交互方式开发和测试笔记本作为 ETL 作业,该 IDE 会自动从 AWS Secrets Manager 检索登录凭证以验证登录用户请求。
第 8 步
访问存储在支持事务数据湖格式的 S3 存储桶中的 ETL 输出数据。您可以通过与 AWS Glue Data Catalog 集成的 Amazon Athena 来查询 Delta Lake 表。
Well-Architected 支柱
当您在云中构建系统时,AWS Well-Architected Framework 可以帮助您了解所做决策的利弊。框架的六大支柱使您能够学习设计和操作可靠、安全、高效、经济高效且可持续的系统的架构最佳实践。使用 AWS 管理控制台中免费提供的 AWS Well-Architected Tool,您可以通过回答每个支柱的一组问题,根据这些最佳实践来检查您的工作负载。
上面的架构图是按照 Well-Architected 最佳实践创建的解决方案示例。要做到完全的良好架构,您应该遵循尽可能多的 Well-Architected 最佳实践。
-
卓越运营
在 Amazon EKS 集群中,Amazon Elastic Compute Cloud(Amazon EC2)实例(X86_64 CPU、Graviton ARM64)充当计算节点,运行 Guidance 工作负载。Spark 作业根据工作负载需求在弹性配置的 Amazon EC2 Spot 实例上执行。
CodeBuild 和 CodePipeline 自动化 GitOps 流程,从 Git 代码更新构建容器映像并将其推送到 Amazon ECR 私有注册表。Argo Workflows 在 Amazon EKS 上调度 ETL 作业,自动从 Amazon ECR 拉取 Arc Docker 映像,从构件 S3 存储桶下载 ETL 资产,并将应用程序日志发送到 CloudWatch。
这种数据 ETL 作业的自动化部署和执行最大限度地减少了运营开销并提高了生产力。此外,使用 CodeBuild 和 CodePipeline 的 CI/CD 管道有助于确保持续改进和开发,同时将指南的 Arc Docker 映像安全地存储在 Amazon ECR 中。
-
安全性
Amazon EKS 集群资源部署在 Amazon VPC 内,提供与公共互联网的逻辑网络隔离。Amazon VPC 支持安全功能,例如 VPC 端点(将流量保留在 AWS 网络内)、安全组、网络访问控制列表(ACL)以及用于控制入站和出站流量及授权的 AWS Identity and Access Management(IAM)角色和策略。Amazon ECR 映像注册表提供容器级安全功能,例如漏洞扫描。Amazon ECR 和 Amazon EKS 遵循开放容器计划(OCI)注册表和 Kubernetes API 标准,并纳入严格的安全协议。
IAM 提供对 Amazon S3 应用程序数据的访问控制,AWS Key Management Service(AWS KMS)则会对 Amazon S3 上的静态数据进行加密。Amazon EKS 集群上的服务账户 IAM 角色(IRSA)可对 Pod 进行细粒度访问控制,实施基于角色的访问控制并限制未经授权的 Amazon S3 数据访问。Secrets Manager 安全地存储和管理凭证。 CloudFront 为 Jupyter 和 Argo Workflows Web 工具提供 SSL 编码的安全入口点。
-
可靠性
Amazon EKS 通过跨多个可用区(AZ)部署 Kubernetes 控制面板和计算面板来实现高度可用的拓扑。这有助于确保数据应用程序的持续可用性(即使可用区遇到中断),从而在 Amazon EKS 上实现可靠的多可用区 EC2 实例部署。
对于数据存储,Amazon S3 提供高持久性和可用性,自动跨区域内的多个可用区复制数据对象。此外,Amazon ECR 在高度可用且可扩展的架构中托管 Docker 映像,可靠地支持基于容器的应用程序部署和增量。
Amazon S3、Amazon EKS 和 Amazon ECR 是完全托管的服务,专为高服务等级协议(SLA)而设计,同时具有较低的运营成本。它们支持部署关键业务应用程序以满足高可用性要求。
-
性能效率
Amazon EKS 集群的 Amazon EC2 计算节点可以根据应用程序工作负载动态扩展和缩减。基于 Graviton 的 EC2 实例通过定制设计的基于 Arm 的处理器、优化的硬件和架构增强来提高性能效率。
解耦的计算存储模式(输入和输出数据存储在 Amazon S3 中)可增强动态计算扩展效率。Data Catalog 可简化元数据管理,并与 Athena 无缝集成,以简化元数据管理并增强查询性能。Data Catalog 可自动抓取和维护技术元数据,以实现高效的数据处理和查询。Athena 无需移动即可快速查询 Amazon S3 数据,进一步提高了分析工作流程的效率。
-
成本优化
Amazon ECR 是一项托管服务,用于保护和支持容器应用程序,对存储和提供容器映像收取固定的月费。 Amazon EKS 集群计算节点可以根据 Spark 工作负载进行扩展和缩减,从而提供经济高效的 Graviton 和竞价型实例类型。Data Catalog 提供无服务器、完全托管的元数据存储库,无需设置和维护长期运行的元数据数据库,并降低了运营开销和成本。CodeBuild 和 CodePipeline 在无服务器环境中自动构建和部署 Arc ETL 框架的 Docker 映像,不仅可以降低基础设施维护成本,而且无需配置和管理构建服务器。
-
可持续性
本指南运行具有基于 Graviton 处理器的高效计算类型的 Amazon EKS 集群。Amazon ECR 无需管理定制硬件或物理服务器。Data Catalog 和 Athena 是无服务器服务,可进一步减少能源和环境影响。
针对大规模 Apache Spark 工作负载优化 Amazon EKS 计算层可最大限度地减少分析工作负载对环境的影响。您可以根据性能需求和可持续发展优先事项灵活选择基于 Arm 的处理器。
相关内容
免责声明
示例代码;软件库;命令行工具;概念验证;模板;或其他相关技术(包括由我方人员提供的任何前述项)作为 AWS 内容按照《AWS 客户协议》或您与 AWS 之间的相关书面协议(以适用者为准)向您提供。您不应将这些 AWS 内容用在您的生产账户中,或用于生产或其他关键数据。您负责根据特定质量控制规程和标准测试、保护和优化 AWS 内容,例如示例代码,以使其适合生产级应用。部署 AWS 内容可能会因创建或使用 AWS 可收费资源(例如,运行 Amazon EC2 实例或使用 Amazon S3 存储)而产生 AWS 费用。
本指南中提及第三方服务或组织并不意味着 Amazon 或 AWS 与第三方之间存在认可、赞助或从属关系。AWS 的指导是一个技术起点,您可以在部署架构时自定义与第三方服务的集成。