Amazon EKS 上的 Amazon EMR 是由提供的部署选项 亚马逊电子病历 使您能够在其上运行 Apache Spark 应用程序 Amazon Elastic Kubernetes服务 (Amazon EKS) 以具有成本效益的方式。 它使用 Apache Spark 的 EMR 运行时来 提高性能 让您的工作运行得更快,成本更低。
Apache Spark 允许您配置作业将使用的内存和 vCPU 内核的数量。 但是,调整这些值是一个手动过程,可能很复杂且充满陷阱。 例如,分配的内存太少会导致内存不足异常和作业可靠性差。 另一方面,太多会导致闲置资源过度支出、集群利用率低和成本高。 此外,由于缺乏对未来需求的可见性,很难为某些用例(例如交互式分析)调整这些设置的大小。 在重复性工作的情况下,考虑到不断变化的负载模式(例如由于外部季节性因素),使这些设置保持最新仍然是一个挑战。
为了解决这个问题,EKS 上的 Amazon EMR 最近宣布支持 垂直自动缩放,一个使用 Kubernetes 垂直 Pod 自动缩放器 (VPA) 自动调整 EMR Spark 应用程序的内存和 CPU 资源以适应所提供工作负载的需求,简化调整资源的过程并优化这些应用程序的成本。 您可以使用垂直自动缩放功能根据历史数据调整资源,以保持内存和 CPU 设置为最新,即使工作负载的配置文件随时间变化也是如此。 此外,您可以利用其对实时信号作出反应的能力,使应用程序能够从内存不足 (OOM) 异常中恢复,从而帮助提高作业可靠性。
垂直自动缩放与现有自动缩放解决方案
垂直自动缩放补充了现有的 Spark 自动缩放解决方案,例如动态资源分配 (DRA) 和 Kubernetes 自动缩放解决方案,例如 Karpenter。
DRA 等功能通常在水平轴上工作,负载增加会导致处理负载的 Kubernetes pod 数量增加。 在 Spark 的情况下,这会导致跨其他执行程序处理数据。 启用 DRA 后,Spark 从初始数量的执行程序开始,如果它观察到有任务等待执行程序运行,则将其扩展。 DRA 在 pod 级别工作,需要一个底层集群级别的自动缩放器(例如 Karpenter)来引入额外的节点或缩减未使用的节点以响应这些 pod 的创建和删除。
但是,对于给定的数据配置文件和查询计划,有时无法轻易更改并行度和执行程序的数量。 例如,如果您尝试连接两个存储已按连接键排序和分桶的数据的表,Spark 可以通过使用等于源数据中的桶数的固定数量的执行器来有效地连接数据。 由于无法更改执行程序的数量,因此垂直自动缩放可以通过提供额外的资源或在执行程序级别缩减未使用的资源来提供帮助。 这有几个优点:
- 如果 pod 的大小达到最佳,Kubernetes 调度程序可以在单个节点中有效地打包更多 pod,从而更好地利用底层集群。
- EKS 提升上的 Amazon EMR 根据 Kubernetes pod 消耗的 vCPU 和内存资源收费。这意味着最佳大小的 pod 更便宜。
垂直自动缩放的工作原理
垂直自动缩放是一项您可以在提交 EMR on EKS 作业时选择的功能。 启用后,它使用 VPA 跟踪 EMR Spark 作业的资源利用率,并根据此数据为 Spark 执行程序 pod 提供资源分配建议。 从 Kubernetes 指标服务器获取的数据被输入到 VPA 构建的统计模型中,以构建推荐。 当新的执行器 pod 启动属于启用了垂直自动缩放的作业时,它们会根据此建议自动缩放,忽略通过 Spark 的执行器内存配置(由 spark.executor.memory
火花设置)。
垂直自动缩放不会影响正在运行的 pod,因为 就地调整 pod 的大小 从 Kubernetes 版本 1.26 开始,它仍然不受支持,这是截至撰写本文时 Amazon EKS 上最新受支持的 Kubernetes 版本。 但是,它在我们可以根据历史数据执行自动缩放的重复作业的情况下以及当某些 pod 内存不足并由 Spark 重新启动时的场景很有用,在这种情况下,可以使用垂直自动缩放来有选择地缩放启动重新启动的 pod 并促进自动恢复。
数据跟踪和建议
回顾一下,垂直自动缩放使用 VPA 来跟踪 EMR 作业的资源利用率。 要深入了解该功能,请参阅 VPA Github上 回购。 简而言之,垂直自动缩放设置 VPA 来跟踪 container_memory_working_set_bytes
启用了垂直自动缩放的 Spark 执行器 pod 的指标。
实时指标数据是从 Kubernetes 指标服务器获取的。 默认情况下,垂直自动缩放会跟踪每个 pod 的峰值内存工作集大小,并根据峰值的 p90 提出建议,并添加 40% 的安全裕度。它还会侦听 Pod 事件(例如 OOM 事件)并对这些事件做出反应。 在 OOM 事件的情况下,VPA 会自动将推荐的资源分配提高 20%。
也表示历史资源利用率数据的统计模型作为自定义资源对象存储在您的 EKS 集群上。 这意味着删除这些对象也会清除旧的建议。
通过工作签名定制推荐
垂直自动缩放的主要用例之一是聚合不同运行的 EMR Spark 作业的使用数据,以得出资源建议。 为此,您需要提供工作签名。 这可以是您在提交作业时配置的唯一名称或标识符。 如果您的作业按固定的时间表(例如每天或每周)重复出现,请务必确保您的作业签名不会针对作业的每个新实例而更改,以便 VPA 汇总和计算作业的不同运行的建议。
如果您认为不同的工作具有相似的资源配置文件,则工作签名甚至可以是相同的。 因此,您可以使用签名在您期望行为相似的不同作业中组合跟踪和资源建模。 相反,如果作业的行为在某个时间点发生变化,例如由于上游数据或查询模式发生变化,您可以通过更改签名或删除此签名的 VPA 自定义资源来轻松清除旧建议(如本文后面所述)。
监控模式
您可以在实际不执行自动缩放的监视模式下使用垂直自动缩放。 如果您的集群上有该设置,建议将报告给 Prometheus,您可以通过 Grafana 仪表板监控建议,并使用它来调试和手动更改资源分配。 监控模式是默认模式,但您也可以在提交作业时覆盖和使用其中一种受支持的自动缩放模式。 参考 文件 用于使用和如何开始的演练。
通过 kubectl 监控垂直自动缩放
您可以使用 Kubernetes 命令行工具 kubectl
要列出集群上的活动建议,请查看正在跟踪的所有作业签名以及清除与不再相关的签名关联的资源。 在本节中,我们提供了一些示例代码来演示列出、查询和删除推荐。
列出集群上的所有垂直自动缩放建议
您可以使用 kubectl
得到 verticalpodautoscaler
资源以查看当前状态和建议。 以下示例查询列出了您的 EKS 集群上当前活动的所有资源:
这会产生类似于以下内容的输出
查询和删除推荐
您还可以使用 kubectl
清除基于签名的工作推荐。 或者,您可以使用 --all
标记并跳过指定签名以清除集群上的所有资源。 请注意,在这种情况下,您实际上将删除 EMR 垂直自动缩放作业运行资源。 这是由 EMR 管理的自定义资源,删除它会自动删除跟踪和存储推荐的关联 VPA 对象。 请参见以下代码:
您可以使用 --all
和 --all-namespaces
删除所有垂直自动缩放相关资源
通过 Prometheus 和 Grafana 监控垂直自动缩放
您可以使用 Prometheus 和 Grafana 来监控 EKS 集群上的垂直自动缩放功能。 这包括查看针对不同作业签名随时间演变的建议、监控自动缩放功能等。对于此设置,我们假设 Prometheus 和 Grafana 已使用官方 Helm 图表安装在您的 EKS 集群上。 如果没有,请参阅 设置 Prometheus 和 Grafana 以监控集群 在 Amazon EKS 研讨会上运行批处理工作负载的部分,以启动它们并在您的集群上运行。
修改 Prometheus 以收集垂直自动缩放指标
默认情况下,Prometheus 不跟踪垂直自动缩放指标。 要启用此功能,您需要开始从集群上的 VPA 自定义资源对象收集指标。 这可以通过使用以下内容修补您的 Helm 图表轻松完成 配置:
在这里, 普罗米修斯头盔值.yaml 是垂直自动缩放特定的定制,它告诉 Prometheus 从 VPA 资源对象收集垂直自动缩放相关的建议,以及所需的最少元数据,例如作业的签名。
您可以通过对新创建的自定义指标运行以下 Prometheus 查询来验证此设置是否有效:
kube_customresource_vpa_spark_rec_memory_target
kube_customresource_vpa_spark_rec_memory_lower
kube_customresource_vpa_spark_rec_memory_upper
这些表示启用垂直自动缩放的 EMR Spark 作业的下限、上限和目标内存。 可以使用类似于以下 Prometheus 查询的签名标签对查询进行分组或过滤:
使用 Grafana 可视化推荐和自动缩放功能
您可以通过导入来使用我们的示例 Grafana 仪表板 EMR 垂直自动缩放 JSON 模型到您的 Grafana 部署中。 仪表板可视化垂直自动缩放建议以及 EMR Spark 应用程序配置和实际使用的内存,如以下屏幕截图所示。
结果按您的 Kubernetes 命名空间和作业签名分类显示。 当您选择某个命名空间和签名组合时,您会看到一个窗格。 该窗格表示属于所选签名的作业的垂直自动缩放建议与该作业的实际资源利用率以及为该作业配置的 Spark 执行程序内存量的比较。 如果启用了自动缩放,则期望 Spark 执行程序内存会跟踪建议。 但是,如果您处于监控模式,两者将不匹配,但您仍然可以从此仪表板查看建议或使用它们来更好地了解作业的实际利用率和资源概况。
已配置内存、利用率和建议的图示
为了更好地说明不同工作负载的垂直自动缩放行为和用法,我们执行了查询 2 TPC-DS 基准测试 5 次迭代——前两次迭代处于监控模式,后 3 次处于自动缩放模式,并在上一节共享的 Grafana 仪表板中可视化结果。
监控模式
这个特定的作业被配置为使用 32GB 的执行程序内存(图中的蓝线)运行,但实际利用率徘徊在 10GB 左右(黄线)。 垂直自动缩放基于此运行(绿线)计算出大约 14 GB 的建议。 此建议基于实际利用率,并添加了安全裕度。
作业的第二次迭代也在监控模式下运行,利用率和建议保持不变。
自动缩放模式
迭代 3 到 5 在自动缩放模式下运行。 在这种情况下,配置的内存从 32GB 下降到与推荐值 14GB(蓝线)相匹配。
在此示例的情况下,后续迭代的利用率和建议保持不变。 此外,我们观察到作业的所有迭代都在大约 5 分钟内完成,无论是否使用自动缩放。 此示例说明作业的执行程序内存分配成功缩减了约 56%(从 32GB 下降到约 14GB),这也转化为作业的 EMR 内存提升成本的等效减少,而不会影响作业的表现。
自动 OOM 恢复
在前面的示例中,我们没有观察到自动缩放导致的任何 OOM 事件。 在极少数情况下,自动缩放会导致 OOM 事件,通常应自动缩放作业。 另一方面,如果启用了自动缩放的作业配置不足并因此遇到 OOM 事件,则垂直自动缩放可以扩展资源以促进自动恢复。
在下面的示例中,一个作业被配置了 2.5 GB 的执行程序内存,并且在执行期间遇到了 OOM 异常。 垂直自动缩放通过在重新启动时自动扩展失败的执行程序来响应 OOM 事件。 如下图所示,当代表内存利用率的琥珀色线开始接近代表配置内存的蓝线时,垂直自动缩放开始增加为重新启动的执行程序配置的内存量,从而允许自动恢复并成功完成没有任何干预的工作。 在作业完成之前,建议的内存收敛到大约 5 GB。
具有相同签名的所有后续作业运行现在将使用之前计算的推荐设置启动,从一开始就防止 OOM 事件。
净化
请参阅 文件 有关从集群中清理垂直自动缩放相关资源的信息。 要在尝试垂直自动缩放功能后清理 EKS 集群上的 EMR,请参阅 清理部分 EKS 研讨会上的 EMR。
结论
您可以使用垂直自动缩放轻松监控一个或多个 EMR on EKS 作业的资源利用率,而不会对您的生产工作负载产生任何影响。 您可以使用包括 Prometheus、Grafana 和 kubectl 在内的标准 Kubernetes 工具来与集群上的垂直自动缩放交互并对其进行监控。 您还可以使用根据您的作业需求得出的建议自动扩展您的 EMR Spark 作业,从而实现成本节约和优化集群利用率,并建立对内存不足错误的弹性。 此外,您可以将它与现有的自动缩放机制(例如动态资源分配和 Karpenter)结合使用,以毫不费力地实现最佳 垂直 资源分配。 展望未来,当 Kubernetes 完全支持 pod 的就地调整大小时,垂直自动缩放将能够利用它来无缝地向上或向下扩展您的 EMR 作业,进一步促进优化成本和集群利用率。
要详细了解 EMR on EKS 垂直自动缩放并开始使用,请参阅 文件。 你也可以使用 EKS 研讨会上的 EMR 试用 Amazon EMR 的 EMR on EKS 部署选项。
关于作者
拉吉山·古纳塞卡兰 是 Amazon Web Services 的 Amazon EMR on EKS 首席工程师。
- SEO 支持的内容和 PR 分发。 今天得到放大。
- 柏拉图爱流。 Web3 数据智能。 知识放大。 访问这里。
- 与 Adryenn Ashley 一起铸造未来。 访问这里。
- 使用 PREIPO® 买卖 PRE-IPO 公司的股票。 访问这里。
- Sumber: https://aws.amazon.com/blogs/big-data/improve-reliability-and-reduce-costs-of-your-apache-spark-workloads-with-vertical-autoscaling-on-amazon-emr-on-eks/
- :具有
- :是
- :不是
- :在哪里
- $UP
- 1
- 10
- 100
- 12
- 14
- 26
- 7
- 8
- a
- 对,能力--
- Able
- 关于
- 账号管理
- 横过
- 要积极。
- 通
- 适应
- 添加
- 额外
- 另外
- 地址
- 优点
- 优点
- 后
- 向前
- 所有类型
- 分配
- 允许
- 允许
- 沿
- 靠
- 已经
- 还
- Amazon
- 亚马逊电子病历
- 亚马逊网络服务
- 琥珀
- 量
- an
- 分析
- 和
- 公布
- 任何
- 再
- 阿帕奇
- Apache Spark
- 应用领域
- 接近
- 约
- 保健
- 围绕
- AS
- 相关
- At
- 尝试
- 自动表
- 自动
- AWS
- 轴
- 背部
- 基于
- BE
- before
- 作为
- 相信
- 更好
- 蓝色
- 都
- 界
- 带来
- 建立
- 但是
- by
- CAN
- 不能
- 案件
- 例
- 一定
- 挑战
- 更改
- 变
- 更改
- 改变
- 带电
- 图表
- 图表
- 便宜
- 选择
- 清洁
- 簇
- 码
- 收集
- 组合
- 结合
- 相比
- 对照
- 完成
- 完成
- 复杂
- 计算
- 配置
- 消费
- 受控
- 价格
- 节约成本
- 经济有效
- 成本
- 中央处理器
- 创建
- 电流
- 目前
- 习俗
- 定制
- 每天
- XNUMX月XNUMX日
- data
- 日期
- 默认
- 演示
- 部署
- 派生
- 不同
- do
- 不
- 不会
- 完成
- 向下
- 下降
- 滴
- 两
- ,我们将参加
- 动态
- 每
- 此前
- 容易
- 有效
- 或
- enable
- 启用
- 使
- 工程师
- 等于
- 故障
- 等
- 醚(ETH)
- 甚至
- 事件
- 发展
- 例子
- 执行
- 现有
- 期望
- 期望
- 有经验
- 体验
- 解释
- 外部
- 促进
- 促进
- 因素
- 失败
- 快
- 专栏
- 已取得
- 少数
- (名字)
- 固定
- 以下
- 针对
- 止
- 充分
- 功能
- 进一步
- 此外
- 未来
- 收集
- 搜集
- 得到
- 越来越
- 特定
- Go
- 绿色
- 手
- 硬
- 有
- 帮助
- 帮助
- 相关信息
- 高
- 历史性
- 横
- 创新中心
- How To
- 但是
- HTML
- HTTPS
- 识别码
- 空闲
- if
- 说明
- 图片
- 影响力故事
- 重要
- 输入
- 改善
- in
- 包括
- 包含
- 增加
- 信息
- 初始
- 安装
- 例
- 相互作用
- 互动
- 介入
- 成
- IT
- 迭代
- 迭代
- 它的
- 工作
- 工作机会
- 加入
- JSON
- 保持
- 保持
- 键
- Kubernetes
- 标签
- 标签
- 缺乏
- (姓氏)
- 后来
- 最新
- 领导
- 学习用品
- 减
- Level
- Line
- 清单
- 清单
- 书单
- 小
- 加载
- 寻找
- 主要
- 使
- 制作
- 管理
- 方式
- 手册
- 余量
- 标记
- 匹配
- 手段
- 机制
- 内存
- 元数据
- 公
- 指标
- 最小
- 分钟
- 时尚
- 模型
- 造型
- 模型
- 模式
- 显示器
- 监控
- 更多
- 此外
- 许多
- 姓名
- 需求
- 需要
- 全新
- 没有
- 节点
- 节点
- 注意
- 现在
- 数
- 对象
- 对象
- 观察
- 观察
- 场合
- of
- 折扣
- 最多线路
- 提供
- 官方
- 老
- on
- 一
- 最佳
- 优化
- 优化
- 追求项目的积极优化
- 附加选项
- or
- 秩序
- 其他名称
- 我们的
- 输出
- 产量
- 超过
- 覆盖
- 类型
- 面包
- 特别
- 修补
- 模式
- 模式
- 高峰
- 演出
- 性能
- 计划
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 豆荚
- 点
- 贫困
- 帖子
- 呈现
- 预防
- 以前
- 校长
- 过程
- 生产
- 本人简介
- 简介
- 提供
- 提供
- 查询
- 罕见
- 应对
- 反应
- 实时的
- 实现
- 概括
- 最近
- 推荐
- 建议
- 建议
- 恢复
- 恢复
- 经常性
- 减少
- 减少
- 有关
- 相应
- 可靠性
- 保持
- 遗迹
- 报道
- 代表
- 代表
- 代表
- 必须
- 岗位要求
- 资源
- 资源
- 响应
- 导致
- 成果
- 右
- 运行
- 运行
- 运行
- 实现安全
- 同
- 储
- 斯卡拉
- 鳞片
- 秤
- 缩放
- 情景
- 始你
- 无缝
- 季节性
- 其次
- 部分
- 看到
- 看到
- 特色服务
- 集
- 套数
- 设置
- 设置
- 格局
- 共用的,
- 短
- 应该
- 如图
- 信号
- 签名
- 签名
- 类似
- 同样
- 简化
- 自
- 单
- 坐在
- 尺寸
- So
- 解决方案
- 一些
- 来源
- 火花
- 具体的
- 纺
- 标准
- 开始
- 启动
- 开始
- 启动
- 统计
- Status
- 仍
- 商店
- 存储
- 商店
- 随后
- 成功
- 这样
- SUPPORT
- 支持
- 支持
- 采取
- 服用
- 目标
- 任务
- 告诉
- 这
- 他们
- 那里。
- 因此
- 博曼
- 他们
- Free Introduction
- 通过
- 次
- 至
- 也有
- 工具
- 跟踪时
- 跟踪
- 二
- 一般
- 相关
- 理解
- 独特
- 未使用
- 升级
- 抬起
- 上游数据
- 用法
- 使用
- 用例
- 用过的
- 运用
- 平时
- 利用
- 利用
- 折扣值
- 价值观
- 确认
- 版本
- 垂直
- 通过
- 查看
- 查看
- 能见度
- 想像
- vs
- 等候
- 演练
- 是
- we
- 卷筒纸
- Web服务
- 每周
- 井
- 为
- ,尤其是
- 这
- 将
- 也完全不需要
- 工作
- 加工
- 合作
- 车间
- 工作坊
- 将
- 写作
- 雅姆
- 您
- 您一站式解决方案
- 和风网