SQL-Based ETL with Apache Spark on Amazon EKS 提供声明性数据处理支持、无代码提取转换加载(ETL)功能和工作流编排自动化,可帮助业务用户(例如分析师和数据科学家)访问其数据并创建有意义的洞察,而无需手动 IT 流程。
优势
在 Jupyter 中构建、测试和调试 ETL 任务
使用 JupyterHub 这种基于 Web 的交互式集成开发环境(IDE)来简化 ETL 应用程序开发。
采用 SQL 优先的方法
。
使用 Spark SQL 在 ETL 管道开发中实施业务逻辑和数据质量检查。
无代码编排任务
。
使用 Argo 工作流来进行任务计划以及管理复杂的任务依赖项,但无需编写代码。
自动部署 Docker 镜像
。
设置一个 AWS 持续改进和持续开发(CI/CD)管道,以在 Amazon Elastic Container Registry(Amazon ECR)中安全地存储数据框架 Docker 镜像。
概览
下图展示了您可以使用 GitHub 上的示例代码构建的架构。
单击可放大
SQL-Based ETL with Apache Spark on Amazon EKS 架构
SQL-Based ETL with Apache Spark on Amazon EKS 会部署一个安全、容错且可自动伸缩的环境来支持您的 ETL 工作负载,它包含下列组件:
- 一个可自定义且灵活的工作流管理层(参见图中 Amazon Elastic Kubernetes Service(Amazon EKS)上的编排组),包括 Argo Workflows 插件。此插件提供了一个基于 Web 的工具,无需编写代码即可完成 ETL 任务的编排。您也可以使用其他工作流工具,例如 Volcano 和 Apache Airflow。
- 配置了一个安全的数据处理工作区,以将数据工作负载统一在同一个 Amazon EKS 集群中。此工作组包含第二个基于 Web 的工具 JupyterHub,用于完成交互式的任务构建和测试。您可以使用声明性的方法开发 Jupyter 笔记本来指定 ETL 任务,也可使用 PySpark 以编程方式编写 ETL 步骤。此工作区还提供了可通过 Argo Workflows 工具来进行管理的 Spark 任务自动化功能。
- 此解决方案中部署了多项安全功能。Amazon Elastic Container Registry(Amazon ECR)负责保存和保护数据处理框架 Docker 镜像。Amazon EKS 上的 AWS Identity and Access Management(IAM)服务账户角色(IRSA)功能提供令牌授权功能,可以对其他 AWS 服务实施精细访问控制。例如,Amazon EKS 与 Amazon Athena 集成后不再需要密码,减少了在连接字符串中暴露 AWS 凭证的风险。Jupyter 会从 AWS Secrets Manager 中获取登录凭证并快速传输到 Amazon EKS。Amazon CloudWatch 使用激活的 CloudWatch Container Insights 功能来监控 Amazon EKS 上的应用程序。
- Amazon EKS 集群上的分析工作负载将数据结果输出到一个 Amazon Simple Storage Service(Amazon S3)数据湖中。通过Amazon Athena 在一个 AWS Glue 数据目录中创建一个数据 Schema 条目(元数据)。