EMR Spark on ACK

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000 次 1年
简介: 本文介绍在ACK上运行EMR Spark工作负载,并通过Remote Shuffle Service和JindoFS提升性能。

001.jpeg

如上文Apache Spark on ACK介绍,Spark on Kubernetes能给我们带来诸多优点,但社区版的解决方案还不是那么完善,存在以下几个关键问题:

  • Shuffle流程,按照目前的Shuffle方式,我们是没办法打开动态资源特性的。而且还需要挂载云盘,云盘面临着Shuffle数据量的问题,挂的比较大会很浪费,挂的比较小又支持不了Shuffle Heavy的任务。
  • 调度和队列管理问题,调度性能的衡量指标是,要确保当大量作业同时启动时,不应该有性能瓶颈。作业队列这一概念对于大数据领域的同学来说应该非常熟悉,他提供了一种管理资源的视图,有助于我们在队列之间控制资源和共享资源。
  • 读写数据湖相比较HDFS,在大量的rename,list等场景下性能会有所下降,同时OSS带宽也是一个不可避免的问题。

为了让在ACK上更好的运行Spark工作负载,阿里云EMR和ACK团队做了大量优化工作,在架构、性能、稳定性、易用性方面都有着很大的提升。

EMR Spark on ACK解决方案

002.png

EMR Spark

EMR Spark是运行在阿里云平台上的大数据处理解决方案,在开源版Apache Spark的基础上做了大量性能、功能以及稳定性方面的改造,并且在和阿里云基础服务的适配上做了非常多的工作。主要有以下核心技术:

  • 实现SparkSQL事务功能,支持update、delete语句。
  • 实现PK、FK、NOT NULL等SQL Constraint,并应用在SQL优化中。
  • 实现Relational Cache:SparkSQL的物化视图。
  • 实现多租户高可用的SparkSQL JDBC Server。
  • SparkSQL部分性能优化列表:
    • 支持Runtime Filter。
    • 使用Adaptive Execution,可在运行时调整作业行为。
    • CBO Join Reorder进一步优化,支持遗传算法。
    • Shuffle流程优化,构建异步非阻塞的Shuffle IO。

Remote Shuffle Service

Spark on kubernetes时会面临shuffle的问题,按照目前的shuffle方式,是没办法打开动态资源特性的。而且还需要挂载云盘,面临着shuffle数据量的问题,挂的大会很浪费,挂的小又支持不了shuffle heavy的任务。针对这个问题,我们设计了shuffle读写分离的架构,称为Remote Shuffle Service,对现有的shuffle机制做了比较大的优化,解决了计算存储分离和混合架构下的shuffle稳定性和性能问题。可以总结为以下3点:

  • Shuffle数据通过网络写出,中间数据计算与存储分离架构。
  • DFS 2副本,消除fetch failed引起的重算,shuffle heavy作业更加稳定。
  • Reduce阶段顺序读磁盘,避免现有版本的随机IO,大幅提升性能。

003.png

JindoFS

计算存储分离已经成为云计算的一种发展趋势。在计算存储分离之前,普遍采用的是传统的计算存储相互融合的架构,但是这种架构存在一定的问题,比如在集群扩容的时候会面临计算能力和存储能力相互不匹配的问题。用户在某些情况下只需要扩容计算能力或者存储能力,而传统的融合架构不能满足用户的这种需求,进行单独的扩充计算或者存储能力;其次在缩容的时候可能会遇到人工干预,人工干预完后需要保证数据在多个节点中同步,而当有多个副本需要同步时候,可能会造成的数据丢失。计算存储分离架构则可以很好的解决这些问题,使得用户只需要关心整个集群的计算能力,但同时也会引入读写数据网络延迟的问题。

004.jpeg

JindoFS是一种云原生的文件系统,结合OSS和本地存储,成为EMR产品的新一代存储系统,为上层计算提供了高效可靠的存储。JindoFS 提供了块存储模式(Block)和缓存模式(Cache)的存储模式, 采用了本地存储和OSS的异构多备份机制,Storage Service提供了数据存储能力,首先使用OSS作为存储后端,保证数据的高可靠性,同时利用本地存储实现冗余备份,利用本地的备份,可以加速数据读取,解决了网络延迟的问题;另外,JindoFS的元数据通过本地服务Namespace Service管理,从而保证了元数据操作的性能(和HDFS元数据操作性能相似)。

005.png

性能评测

为了验证EMR Spark在ACK上的性能,我们通过TPC-DS进行对比评测。TPC-DS测试基准是TPC组织推出的一个决策支持系统测试基准,TPC-DS采用星型、雪花型等多维数据模式。它包含7张事实表,17张纬度表平均每张表含有18列。其工作负载包含99个SQL查询,覆盖SQL99和2003的核心部分以及OLAP。这个测试集包含对大数据集的统计、报表生成、联机查询、数据挖掘等复杂应用,测试用的数据和值是有倾斜的,与真实数据一致。可以说TPC-DS是与真实场景非常接近的一个测试集,也是难度较大的一个测试集。

测试环境

首先准备测试环境,在ACK上新建一个标准版集群或标准专有集群,安装依赖的组件。

集群配置

ACK集群说明

集群配置 参数
集群类型 ACK标准集群
集群版本 1.16.9-aliyun.1
ECS实例 ECS规格:ecs.d1ne.6xlarge操作系统:CentOS 7.7 64位CPU: 24核内存:96G数据盘:5500GB HDD x 12
Worker Node个数 20

ecs.d1ne.6xlarge 大数据机型,默认带了12块5500GB的HDD数据盘,需要mount一下才能使用。

组件配置

ack-spark-operator

在ACK应用目录中安装,用来提交SparkApplicaiton作业。

ack-spark-history-server (非必要)

在ACK应用目录中安装,记录Spark执行任务过程中的event-log,并提供UI界面,方便排查问题。

JindoFS

在ACK应用目录中安装,用来实现数据的分布式缓存加速。

EMR Spark

在社区版Apache Spark深度优化的版本。

Remote Shuffle Service

Shuflle读写分离架构。

注意:EMR Spark 和 Remote Shuffle Service 可通过文章结尾处的钉钉群联系我们获取安装方式。

测试数据

基于TPC-DS生成的1TB和10TB测试数据,生成数据的情况可参考TPC-DS生成数据

测试结果

1. EMR Spark vs Apache Spark

测试数据:10TB

纵轴单位:秒

006.jpeg

007.jpeg

在10TB数据上测试,EMR Spark相比社区版本Spark约有57%的性能提升,详细测试过程参考使用EMR Spark运行Spark工作负载

2. EMR Spark vs EMR Spark + EMR Shuffle Service

测试数据:10TB

纵轴单位:秒
008.jpeg

009.jpeg

在10TB数据上,增加Remote Shuffle Service后,相比直接使用EMR Spark,约有16%的性能提升。详细测试过程请参考使用EMR Spark + Remote Shuffle Service运行Spark工作负载

3. EMR Spark vs EMR Spark + JindoFS

测试数据:1TB

纵轴单位:秒

010.jpeg

011.jpeg

在1TB数据上,使用JindoFS做数据分布式缓存后,相比直接使用EMR Spark,得到约15%性能提升。详细测试过程请参考使用EMR Spark + JindoFS运行Spark工作负载

测试总结

通过上面几组对比可以看到,EMR Spark相比社区版Spark有大幅度的性能提升,而通过Remote Shuffle Service和JindoFS也分别解决了存储计算分离架构带来的Shuffle和数据本地化问题。另外,需要说明的是Remote Shuffle Service和JindoFS在比较适用于数据量大的场景,用户可以根据自己的需要灵活组合使用。

展望

对于Spark on ACK的后续发展,我们一方面是要达到运维一体化,另一方面主要希望做到更好的性价比,主要有以下几点工作:

  • 可以将k8s计算资源分为固定集群和Serverless集群的混合架构,固定集群主要是一些包年包月、资源使用率很高的集群,Serverless是做到按需弹性。
  • 可以通过调度算法,灵活的把一些SLA不高的任务调度到Spot实例上,就是支持抢占式ECI容器,这样可以进一步降低成本。
  • 由于提供了Remote Shuffle Service集群,充分让Spark在架构上解耦本地盘,只要Executor空闲就可以销毁。配合上OSS提供的存算分离,必定是后续的主流方向。
  • 对于调度能力,这方面需要特别的增强,做到能够让客户感受不到性能瓶颈,短时间内调度起来大量的作业。同时对于作业队列管理方面,希望做到更强的资源控制和资源共享。

欢迎加入钉钉群沟通交流。

c17fc7d1d4f543e0b793fa89c2188c6f.jpeg

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
煜空
+关注
目录
打赏
0
1
0
0
8
分享
相关文章
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
363 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
一体系数据平台的进化:基于阿里云 EMR Serverless Spark 的持续演进
本文介绍了一体系汽配供应链平台如何借助阿里云EMR Serverless Spark实现从传统Hadoop平台向云原生架构的迁移。通过融合高质量零部件供应与创新互联网科技,一体系利用EMR Serverless Spark和DataWorks构建高效数据分析体系,解决大规模数据处理瓶颈。方案涵盖实时数据集成、Lakehouse搭建、数仓分层设计及BI/ML应用支持,显著提升数据处理性能与业务响应速度,降低运维成本,为数字化转型奠定基础。最终实现研发效率提升、运维压力减轻,并推动AI技术深度整合,迈向智能化云原生数据平台。
打破资源边界、告别资源浪费:ACK One 多集群Spark和AI作业调度
ACK One多集群Spark作业调度,可以帮助您在不影响集群中正在运行的在线业务的前提下,打破资源边界,根据各集群实际剩余资源来进行调度,最大化您多集群中闲置资源的利用率。
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
基于阿里云 EMR Serverless Spark 版快速搭建OSS日志分析应用
103 0
美的楼宇科技基于阿里云 EMR Serverless Spark 构建 LakeHouse 湖仓数据平台
美的楼宇科技基于阿里云 EMR Serverless Spark 建设 IoT 数据平台,实现了数据与 AI 技术的有效融合,解决了美的楼宇科技设备数据量庞大且持续增长、数据半结构化、数据价值缺乏深度挖掘的痛点问题。并结合 EMR Serverless StarRocks 搭建了 Lakehouse 平台,最终实现不同场景下整体性能提升50%以上,同时综合成本下降30%。
468 58
阿里云 EMR Serverless Spark 在微财机器学习场景下的应用
面对机器学习场景下的训练瓶颈,微财选择基于阿里云 EMR Serverless Spark 建立数据平台。通过 EMR Serverless Spark,微财突破了单机训练使用的数据规模瓶颈,大幅提升了训练效率,解决了存算分离架构下 Shuffle 稳定性和性能困扰,为智能风控等业务提供了强有力的技术支撑。
283 15
EMR Serverless Spark:一站式全托管湖仓分析利器
本文根据2024云栖大会阿里云 EMR 团队负责人李钰(绝顶) 演讲实录整理而成
502 58
阿里云 EMR Serverless Spark 版正式开启商业化
阿里云 EMR Serverless Spark 版正式开启商业化,内置 Fusion Engine,100% 兼容开源 Spark 编程接口,相比于开源 Spark 性能提升300%;提供 Notebook 及 SQL 开发、调试、发布、调度、监控诊断等一站式数据开发体验!
382 3
阿里云 EMR Serverless Spark 版正式开启商业化
EMR Serverless Spark 实践教程 | 通过 Apache Airflow 使用 Livy Operator 提交任务
Apache Airflow 是一个强大的工作流程自动化和调度工具,它允许开发者编排、计划和监控数据管道的执行。EMR Serverless Spark 为处理大规模数据处理任务提供了一个无服务器计算环境。本文为您介绍如何通过 Apache Airflow 的 Livy Operator 实现自动化地向 EMR Serverless Spark 提交任务,以实现任务调度和执行的自动化,帮助您更有效地管理数据处理任务。
376 0
大数据≠大样本:基于Spark的特征降维实战(提升10倍训练效率)
本文探讨了大数据场景下降维的核心问题与解决方案,重点分析了“维度灾难”对模型性能的影响及特征冗余的陷阱。通过数学证明与实际案例,揭示高维空间中样本稀疏性问题,并提出基于Spark的分布式降维技术选型与优化策略。文章详细展示了PCA在亿级用户画像中的应用,包括数据准备、核心实现与效果评估,同时深入探讨了协方差矩阵计算与特征值分解的并行优化方法。此外,还介绍了动态维度调整、非线性特征处理及降维与其他AI技术的协同效应,为生产环境提供了最佳实践指南。最终总结出降维的本质与工程实践原则,展望未来发展方向。

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问