当前位置: 首页 > article >正文

阿里云 EMR 发布托管弹性伸缩功能,支持自动调整集群大小,最高降本60%

开源大数据平台 E-MapReduce(简称“EMR”)是云原生开源大数据平台,为客户提供简单易集成的Hadoop、Hive、Spark、StarRocks、Flink、Presto等开源大数据计算和存储引擎。

EMR on ECS是指EMR在ECS上运行的方式。EMR on ECS将EMR的大数据处理功能与ECS的容器化部署优势相结合,使得您可以更加灵活地配置和管理EMR集群,从而更好地适应复杂的数据处理和分析场景。

EMR on ECS 支持弹性伸缩,能够根据业务需求和策略自动调整计算能力(即节点数量)。EMR on ECS 近期重磅推出托管弹性伸缩功能,基于 EMR 托管弹性伸缩功能,您可以指定集群的最小和最大计算限制,EMR会持续对与集群上运行的工作负载相关的关键指标进行采样,自动调整集群大小,以获得最佳性能和资源利用率。

用例和优势

在 EMR 托管弹性伸缩发布之前,您必须提前预测工作负载或填写自定义弹性伸缩规则,这些规则取决于对服务框架(例如 Apache Spark 或 Apache Hive)的深入了解。预测工作负载或编写自定义规则比较困难且容易出错。集群资源大小不正确通常会导致稳定性风险,或者资源利用不足及成本超支。

阿里云EMR发布托管弹性伸缩功能后,您只需为集群指定最大和最小的Task节点数,阿里云EMR将自动在范围内调整集群规模,以实现最优性能与面对业务激增,EMR可以在较短时间内自动补充资源,并将新增任务调度至新的节点上在业务高峰过后,自动移除多余的资源,任务平滑的回到原有节点上,提升资源利用率。

为了对比固定集群和托管弹性伸缩集群的资源利用率效果,我们模拟了以下集群和场景:

用例

  • 集群设置:

规格

数量

master

ecs.r7.4xlarge 16 vCPU 128 GiB

1

core

ecs.g7.xlarge 4 vCPU 16 GiB

2

task

ecs.g7.xlarge 4 vCPU 16 GiB

+ 固定集群设置:20

+ 托管弹性伸缩集群设置:

- 最小Task节点数:0

- 最大Task节点数:20

  • 场景设置:

场景

作业提交持续时间

作业提交间隔

作业高峰持续时间

有时间规律:固定长作业

4小时

2小时

1小时

有时间规律:固定短作业

2小时

15分钟

5分钟

夜间周期规律+白天随机提交

2小时

随机

5分钟

无时间规律

随机

随机

随机

  • 效果对比:

相比于固定集群配置,托管弹性伸缩在各类场景下都有较大的资源利用率提升。

资源利用率

未开启弹性

托管伸缩

有时间规律:固定长作业

44.74%

87.85%

有时间规律:固定短作业

35.64%

74.58%

夜间周期规律+白天随机提交

27.08%

76.19%

无时间规律

39.18%

84.66%

以下大盘显示了 EMR 托管弹性伸缩如何根据集群负载调整集群大小,在高峰期扩大集群,在空闲时缩小集群。与固定大小的集群相比,在用例中启用托管弹性伸缩,可将集群成本降低 60%。

优势

相比于自定义伸缩,托管弹性伸缩在性能和配置便捷度上都有较大的提升

配置 EMR 托管扩展

配置 EMR 托管扩展非常简单。只需启用 EMR 托管扩展并设置Task节点数量的最小和最大限制。您可以在正在运行的集群上或在创建集群时启用托管扩展。有关更多信息,请参阅

​​如何在EMR控制台配置弹性伸缩_开源大数据平台 E-MapReduce(EMR)-阿里云帮助中心​​

节点分配策略

EMR 托管弹性伸缩让您控制集群可扩展到的最小容量和最大容量。可控制这些容量的参数包括:

  • 最大Task节点数
  • 最小Task节点数
  • 最大按量Task节点数,最大按量Task节点数是用来调节抢占式实例和按量实例的分配
  • 仅扩展按量Task节点,最大按量Task节点数=最大Task节点数。
  • 仅扩展抢占式实例Task节点,最大按量Task节点数=最小Task节点数。

如果您在使用过程中遇到任何疑问,欢迎扫描下方二维码加入EMR用户钉钉群进行咨询。


http://www.kler.cn/a/506024.html

相关文章:

  • (01)FreeRTOS移植到STM32
  • 金融项目实战 05|Python实现接口自动化——登录接口
  • 神经网络基础-价格分类案例
  • 深度学习-87-大模型训练之预训练和微调所用的数据样式
  • ros2笔记-6.2 使用urdf创建机器人模型
  • 我这不需要保留本地修改, 只需要拉取远程更改
  • 如何解决 XGBoost 控制台警告:版本不一致导致的模型加载问题
  • day10_Structured Steaming
  • 【MATLAB代码】CV和CA模型组成的IMM(滤波方式为UKF),可复制粘贴源代码
  • 神经网络常见操作(卷积)输入输出
  • 【微服务】SpringBoot 通用异常处理方案使用详解
  • PyTorch使用教程(3)-Tensor包
  • C语言预处理艺术:编译前的魔法之旅
  • 人工智能-机器学习之多分类分析(项目实战二-鸢尾花的多分类分析)
  • git仓库迁移(从一个平台的仓库迁移到另一个平台的仓库)
  • (处理 Kafka 消息积压) - 高吞吐 + 零丢失的阻塞队列实战方案
  • Android 防止每次打开APP都显示启动页
  • 接口传参 data格式和json格式区别是什么
  • 基于Springboot + vue实现的旅游网站
  • LeetCode 3280. 将日期转换为二进制表示
  • HTML常用元素及其示例
  • react中hooks之useEffect 用法总结
  • 嵌入式Linux:什么是进程?
  • php基本数据结构
  • docker 部署 MantisBT
  • 基于AD硬件开发(2) --- Altium Designer 布线后排查漏线