Amazon EKS 上的 Amazon EMR 提供部署选项 亚马逊电子病历 允许您运行分析工作负载 Amazon Elastic Kubernetes服务 (亚马逊 EKS)。 这是一个有吸引力的选项,因为它允许您在公共资源池上运行应用程序,而无需配置基础设施。 此外,您还可以使用 亚马逊EMR Studio 构建在 Amazon EKS 集群上运行的分析代码。 EMR Studio 是一个基于 Web 的集成开发环境 (IDE),使用完全托管的 Jupyter 笔记本,可以连接到任何 EMR 集群,包括 EKS 上的 EMR。 它用 AWS单一登录 (SSO) 或兼容的身份提供商 (IdP),使用企业凭据通过安全 URL 直接登录 EMR Studio。
部署 EMR Studio 以附加到 EKS 上的 EMR 需要集成多项 AWS 服务:
此外,您还需要在 EKS 组件上安装以下 EMR:
这篇文章帮助您构建所有必要的组件,并通过运行单个脚本将它们缝合在一起。 我们还描述了此设置的架构以及组件如何协同工作。
架构概述
借助 EKS 上的 EMR,您可以在同一 Amazon EKS 集群上运行 Spark 应用程序以及其他类型的应用程序,从而改善资源分配并简化基础设施管理。 有关 Amazon EMR 如何在 Amazon EKS 集群内运行的更多信息,请参阅 新功能 – Amazon Elastic Kubernetes Service (EKS) 上的 Amazon EMR。 EMR Studio 提供了一个基于 Web 的 IDE,可以轻松开发、可视化和调试在 EMR 中运行的应用程序。 有关更多信息,请参阅 Amazon EMR Studio(预览版):Amazon EMR 提供全新的笔记本优先 IDE 体验.
Spark 内核是 Amazon EKS 集群中命名空间中的计划 Pod。 EMR Studio 使用 Jupyter Enterprise Gateway (JEG) 在 Amazon EKS 上启动 Spark 内核。 JEG 类型的托管端点在 EMR 虚拟集群的关联命名空间中配置为 Kubernetes 部署,并作为 Kubernetes 服务公开。 每个 EMR 虚拟集群都映射到在 Amazon EKS 集群中注册的 Kubernetes 命名空间; 虚拟集群不管理物理计算或存储,而是指向调度工作负载的 Kubernetes 命名空间。 每个虚拟集群可以有多个托管端点,每个端点都有自己的配置内核,以满足不同的用例和需求。 JEG 托管终端节点提供由应用程序负载均衡器 (ALB) 提供服务的 HTTPS 终端节点,只能从 EMR Studio 和在 Amazon EKS VPC 的私有子网中创建的自托管笔记本进行访问。
托管终端节点是在虚拟集群的 Amazon EKS 命名空间中创建的(在本例中, sparkns
)并且 HTTPS 端点由私有子网提供服务。 内核 Pod 使用托管端点中定义的作业执行 IAM 角色运行。 在托管终端节点创建期间,EKS 上的 EMR 使用 AWS 负载均衡器控制器 kube-system
命名空间来创建一个 ALB,其目标组与虚拟集群的 Kubernetes 命名空间中的 JEG 托管端点连接。
您可以以不同的方式配置每个托管端点的内核。 例如,允许 Spark 内核使用 AWS胶水 作为他们的目录,您可以在 — 中应用以下配置 JSON 文件:configuration-overrides
创建托管端点时的标志:
托管端点是一个 Kubernetes 部署,由配置的命名空间内的服务(在本例中, sparkns
)。 当我们跟踪端点信息时,我们可以看到Jupyter Enterprise Gateway部署如何与ALB和目标组连接:
要了解其连接方式,请考虑两个 EMR Studio 会话。 ALB 向 EMR Studio 会话公开端口 18888。 JEG 服务将 ALB 上的外部端口 18888 映射到动态端口 NodePort
在 JEG 服务上(在本例中为 30091)。 JEG 服务将流量转发到 TargetPort
9547,它将流量路由到适当的 Spark 驱动程序 Pod。 每个笔记本会话都有自己的内核,该内核有各自的 Spark 驱动程序和执行程序 Pod,如下图所示。
将 EMR Studio 连接到虚拟集群和托管端点
每次用户将虚拟集群和托管端点附加到其 Studio 工作区并启动 Spark 会话时,都会调度 Spark 驱动程序和 Spark 执行程序。 当你运行时你可以看到 kubectl
检查启动了哪些 pod:
每个笔记本 Spark 内核会话都会部署一个驱动程序 pod 和执行程序 pod,它们会继续运行,直到内核会话关闭。
笔记本单元中的代码在 Amazon EKS 集群中部署的执行程序 Pod 中运行。
在 EKS 和 EMR Studio 上设置 EMR
在 EKS 和 EMR Studio 上设置 EMR 需要几个步骤和部分。 启用 AWS SSO 是先决条件。 您可以使用本节中提供的两个启动脚本,或者使用本文后面提供的步骤手动部署它。
我们在这篇文章中提供了两个启动脚本。 一个是 bash 脚本,它使用 AWS CloudFormation、eksctl 和 AWS命令行界面 (AWS CLI) 命令提供完整解决方案的端到端部署。 另一个使用的是 AWS云开发套件 (AWS CDK)这样做。
先决条件
确保满足以下先决条件:
有关支持的 IdP 的信息,请参阅 为 Amazon EMR Studio 启用 AWS 单点登录.
Bash脚本
该脚本可在 GitHub上.
先决条件
该脚本要求您使用 AWS 云9。 按照中的说明进行操作 亚马逊 EKS 研讨会。 请务必仔细遵循以下说明:
部署 AWS Cloud9 桌面后,继续执行后续步骤。
考前准备
使用以下代码克隆 GitHub 存储库并准备 AWS Cloud9 先决条件:
部署堆栈
在运行脚本之前,请提供以下信息:
- AWS 账户 ID 和区域(如果您的 AWS Cloud9 桌面与您想要在 EKS 上部署 EMR 的账户 ID 或区域不同)
- 的名字 亚马逊简单存储服务 要创建的 (Amazon S3) 存储桶
- 要与 EMR Studio 会话关联的 AWS SSO 用户
脚本部署堆栈后,将显示已部署的 EMR Studio 的 URL:
AWS CDK 脚本
AWS CDK 脚本可在 GitHub上。 您需要检查 main
分支。 这些堆栈在具有私有子网的新 VPC 中部署 Amazon EKS 集群和 EMR on EKS 虚拟集群,并且可以选择 亚马逊管理的 Apache 气流 (Amazon MWAA) 环境和 EMR Studio。
先决条件
您需要 AWS CDK 版本 1.90.1 或更高版本。 有关更多信息,请参阅 开始使用 AWS CDK.
我们使用前缀列表将对某些资源的访问限制在您批准的网络 IP 范围内。 创建一个 前缀列表 如果您还没有一个。
如果您计划使用 EMR Studio,则需要 AWS SSO 在您的帐户中配置.
考前准备
克隆存储库并签出后 main
分支,创建并激活一个新的Python虚拟环境:
现在安装 Python 依赖项:
最后,引导 AWS CDK:
部署堆栈
使用以下代码综合 AWS CDK 堆栈:
该命令生成四个堆栈:
- emr-eks-cdk – 主堆栈
- 姆瓦阿-cdk – 添加亚马逊 MWAA
- cdk工作室 – 添加 EMR Studio 先决条件
- 工作室 cdk 现场 – 添加 EMR 工作室
下图说明了 AWS CDK 堆栈部署的资源。
首先部署第一个堆栈:
如果您想使用 Apache Airflow 作为编排器,请部署该堆栈:
部署第一个 EMR Studio 堆栈:
等待受管端点变为活动状态。 您可以通过运行以下代码来检查状态:
虚拟集群 ID 可在 emr-eks-cdk 堆栈的 AWS CDK 输出中找到。
当端点处于活动状态时,部署第二个 EMR Studio 堆栈:
手动部署
如果您希望在 EKS 和 EMR Studio 上手动部署 EMR,请使用本部分中的步骤。
设置专有网络
如果您使用的是 Amazon EKS v. 1.18,请设置一个也具有私有子网并为外部负载均衡器进行适当标记的 VPC。 有关标记,请参阅: Amazon EKS 上的应用程序负载均衡 和 创建 EMR Studio 服务角色.
创建 Amazon EKS 集群
启动具有至少一个托管节点组的 Amazon EKS 集群。 有关说明,请参阅 配置 和 Amazon EKS 入门.
创建相关的 IAM 策略、角色、IdP 和 SSL/TLS 证书
要创建 IAM 策略、角色、IdP 和 SSL/TLS 证书,请完成以下步骤:
- 在 EKS 上启用 EMR 的集群访问.
- 根据 EKS OIDC 提供商 URL 在 IAM 中创建 IdP.
- 创建 SSL/TLS 证书并将其放入 AWS证书管理器.
- 创建相关的 IAM 策略和角色:
- 作业执行角色
- 更新信托政策 对于工作执行角色
- 为 AWS 负载均衡器控制器部署并创建 IAM 策略
- EMR Studio 服务角色
- EMR Studio 用户角色
- EMR Studio 用户政策 与 AWS SSO 用户和组关联
- 向 Amazon EMR 注册 Amazon EKS 集群 创建虚拟EMR集群
- 创建合适的 安全小组 附加到创建的每个 EMR Studio:
- 工作区安全组
- 发动机安全组
- 使用适当的标签标记安全组。 有关说明,请参阅 创建 EMR Studio 服务角色.
Amazon EKS 中所需的安装
部署 AWS 负载均衡器控制器 在 Amazon EKS 集群中(如果您尚未这样做)。
在 EKS 相关部分创建 EMR 并将用户映射到 EMR Studio
完成以下步骤:
- 创建至少一个与 Amazon EKS 集群关联的 EMR 虚拟集群。 有关说明,请参阅步骤 1 在 EKS 上为 EMR Studio 设置 Amazon EMR.
- 创建至少一个托管端点。 有关说明,请参阅步骤 2 在 EKS 上为 EMR Studio 设置 Amazon EMR.
- 创建至少一个EMR工作室; 将 EMR Studio 与使用 Amazon EKS 集群配置的私有子网关联。 有关说明,请参阅 创建 EMR Studio.
- 当 EMR Studio 可用时, 将 AWS SSO 用户或组映射到 EMR Studio 并向该用户应用适当的 IAM 策略。
使用 EMR Studio
要开始使用 EMR Studio,请完成以下步骤:
- 通过某个区域中的工作室查找 EMR Studio 的 URL:
- 通过列出的 URL,使用您之前使用的 AWS SSO 用户名登录。
身份验证后,用户将被路由到 EMR Studio 仪表板。
- 创建工作区.
- 针对 工作区名称,输入名称。
- 针对 子网路,选择与受管节点组关联的子网之一对应的子网。
- 针对 S3位置,输入可存储笔记本内容的 S3 存储桶。
- 创建工作区后,选择一个位于
Ready
状态。
- 在侧边栏中,选择 EMR 集群图标。
- 下 集群类型¸选择 EKS 上的 EMR 集群.
- 选择可用的虚拟集群和可用的托管端点。
- 附.
连接后,EMR Studio 会显示可用的内核 笔记本 和 安慰 部分。
- PySpark(Kubernetes) 启动笔记本内核并启动 Spark 会话。
由于此处的终端节点配置使用 AWS Glue 作为其元存储,因此您可以列出连接到 AWS Glue 数据目录的数据库和表。 您可以使用以下示例脚本来测试设置。 根据数据目录中相应数据库和表的需要修改脚本:
清理
为了避免将来产生费用,请通过运行remove_setup.sh删除此处启动的资源:
结论
EMR on EKS 允许您在 Amazon EKS 集群内的公共资源池上运行应用程序,而无需预置基础设施。 EMR Studio 是一款完全托管的 Jupyter 笔记本和工具,可配置在 EMR 集群(包括 Amazon EKS 上的虚拟集群)上运行的内核。 在这篇文章中,我们描述了 EMR Studio 如何与 EKS 上的 EMR 连接的架构,并提供了自动部署所有组件以连接这两个服务的脚本。
如果您有任何问题或建议,请发表评论。
作者简介
兰迪·德福 是 Amazon Web Services 的首席解决方案架构师。 他与 AWS 客户合作,提供数据库项目的指导和技术援助,帮助他们在使用 AWS 时提高解决方案的价值。
马修·谭 是 Amazon Web Services 的高级分析解决方案架构师,并为客户提供指导,使用 AWS 分析服务在其分析工作负载上开发解决方案。
- '
- "
- 100
- 7
- 9
- ACCESS
- 账号管理
- 要积极。
- 所有类型
- 分配
- Amazon
- 亚马逊网络服务
- 分析
- 阿帕奇
- 应用领域
- 应用领域
- 架构
- 认证
- AWS
- 摆动
- 建立
- 例
- 证书
- 收费
- 结算
- 分类
- 云端技术
- 码
- 相当常见
- 计算
- 内容
- 继续
- 调节器
- 创造
- 资历
- 合作伙伴
- XNUMX月XNUMX日
- data
- 数据库
- 数据库
- 开发
- 研发支持
- 司机
- 端点
- 企业
- 环境
- 执行
- 体验
- 工厂
- 姓氏:
- 遵循
- 正面
- 未来
- 混帐
- GitHub上
- 团队
- Hadoop的
- 此处
- 蜂房
- 创新中心
- HTTPS
- IAM
- ICON
- 身分
- 包含
- 信息
- 基础设施
- IP
- IT
- 工作
- Jupyter笔记本
- Kubernetes
- 发射
- 启动
- Line
- 清单
- 加载
- 颠覆性技术
- 地图
- 地图
- 网络
- 笔记本电脑
- 附加选项
- 其他名称
- 的
- 豆荚
- 政策
- 政策
- 池
- 预览
- 校长
- 私立
- 项目
- 蟒蛇
- 岗位要求
- 资源
- 资源
- 运行
- 运行
- 保安
- 特色服务
- 集
- 简易
- So
- 解决方案
- SQL
- 开始
- 开始
- 州/领地
- Status
- 存储
- 商店
- 支持
- 目标
- 文案
- test
- 次
- 交通
- 信任
- 用户
- 折扣值
- 在线会议
- 卷筒纸
- Web服务
- 中
- 话
- 工作
- 合作