You need to enable JavaScript to run this app.
导航
EMR on VKE 应用场景
最近更新时间:2025.01.07 11:15:33首次发布时间:2024.11.19 20:34:15

模型训练前的数据准备工作

数据准备工作中经常遇到以下几类问题:

  • 时效要求高,要求数据必须在业务限定时间内完成。
  • 数据处理吞吐量大,对对象存储的网络带宽要求比较高。
  • 数据倾斜场景下,Shuffle 并行度高,常见部分节点磁盘写满,部分节点空闲的情况。
  • 计算过程中常用分布式计算框架,但框架往往是采用文件语义,与数据存储的对象语义不一致。
  • 需要加载丰富的三方处理工具,要求运行环境比较灵活。

EMR on VKE提供Spark和Ray这类高性能的计算引擎和分布式计算框架用于数据准备工作,能根据数据规模线性扩展计算规模。

Spark

Ray

  • 引擎比较成熟,调试比较复杂
  • Java技术栈
  • 常要用于文本分析
  • 相对于Spark,更加轻量级
  • Shuffle机制比较简单
  • 轻量级,C++相对于Java,执行效率更高
  • 常用于视频/图片/文本的分析

EMR 采用 Remote Shuffle 解决数据倾斜问题,提升任务运行稳定性和执行效率,建议 Remote shuffle 采用火山引擎的 nvMe SSD 本地盘实例,比如 i3s 实例规格。

提升方向

Remote Shuffle场景描述

提高性能

  • Remote Shuffle 通过减少网络请求的次数和优化数据传输,降低了网络延迟和提高了数据传输效率
  • 通过合并多个小文件为大文件,改善了磁盘的顺序读写性能,减少了随机 I/O,从而提升了作业的整体性能
  • 在大数据量场景下,Remote Shuffle 通过中心化的决策能力,如负载均衡,可以更有效地管理物理机的 I/O,提升性能

增强稳定性

  • Remote Shuffle 通过存算分离架构,使得 Shuffle 服务的稳定性不受计算节点稳定性的影响
  • 引入了流量控制机制,如 Credit-based 流量控制,避免下游消费者节点因数据量过大而压力过大
  • 提供了更好的容错性和自我恢复能力,通过心跳和状态同步机制来维护集群状态的最终一致性

提升资源利用率

  • Remote Shuffle 通过减少计算节点的磁盘使用,降低了对本地磁盘的依赖,使得 Spark 作业可以在资源受限的环境中更有效地运行
  • 通过优化内存使用,如使用受管理的内存,减少了内存溢出的风险,提高了作业的稳定性

简单部署和运维

  • Remote Shuffle Service 作为一个独立的服务,简化了 Spark 作业的部署和运维工作
  • 提供了丰富的监控指标,方便用户监控系统的运行状态,简化了问题定位和故障排查

通过EMR自研数据湖加速引擎Proton解决文件语义到对象语义的转换,结合对象存储(TOS)文件桶(HNS)可以大幅提升rename、delete、list等性能。Proton缓存模式可以解决大幅缓解对象存储访问带宽限制。
用户基于EMR on VKE Spark/Ray基础镜像,可以灵活打入自定义库和Python包,实现自定义运行环境。

离在线混合部署

在线业务系统和离线大数据系统使用两套基础设施,资源互相隔离,常见于企业内。随着Kubernete架构的流行和技术成熟,越来越多的企业把在线业务系统基于Kubernete部署,大数据系统依旧使用传统的服务器搭建。在线业务系统和大数据系统两套地层设施,通常带来以下问题:

  • 两套底层设施,存在资源孤岛问题,公司层面整体资源利用率低。
  • 两套底层设施,运维体系无法统一,增加了运维成本。

使用EMR on VKE,支持用户将在线业务系统和离线大数据共享一套VKE集群(K8s),底层资源共享实现分时服用,提升资源整体利用率,达到资源降本目的。共享VKE集群后可实现一套运维体系,能够大幅降低运维成本。此外可以借助弹性伸缩、动态超分等能力,可以进一步提升资源利用率,减少常驻资源。