数据处理的艺术:EMR Serverless Spark实践及应用体验

简介: 阿里云EMR Serverless Spark是基于Spark的全托管大数据处理平台,融合云原生弹性与自动化,提供任务全生命周期管理,让数据工程师专注数据分析。它内置高性能Fusion Engine,性能比开源Spark提升200%,并有成本优化的Celeborn服务。支持计算存储分离、OSS-HDFS兼容、DLF元数据管理,实现一站式的开发体验和Serverless资源管理。适用于数据报表、科学项目等场景,简化开发与运维流程。用户可通过阿里云控制台快速配置和体验EMR Serverless Spark服务。

前言

在当今这个数据无处不在的时代,企业和组织正以前所未有的速度产生和积累着海量数据。如何从这些浩瀚的数据海洋中挖掘出有价值的信息,以驱动业务增长和创新,成为了每个决策者面临的重大课题。在这场数据革命中,Apache Spark凭借其卓越的性能、灵活性以及丰富的数据处理能力,已成为大数据处理领域中一颗璀璨的明星。而随着云计算技术的飞速发展,云原生、Serverless的计算模式正逐渐成为新的趋势,为企业带来了前所未有的便捷与效率。

在此背景下,阿里云推出的EMR Serverless Spark,作为一款专为大规模数据处理与分析打造的全托管Serverless计算产品,正引领着这场变革。它不仅继承了Spark的强大基因,更融合了云原生的弹性与自动化,让数据工程师和数据科学家能够摆脱繁琐的基础设施管理,专注于数据价值的挖掘与实现。

本文旨在通过深入浅出的分析与实操,揭示EMR Serverless Spark如何在各应用场景中大放异彩,周周将从最佳实践出发,探讨其在数据处理效率、成本控制、易用性以及与现有技术生态的融合等方面的独特优势。同时,通过第一手的用户体验评测,展现其如何简化数据处理全生命周期的工作流程,助力企业快速构建数据驱动的决策体系。

Spark

对于没有接触过大数据方面的朋友来说,可能不是很了解Spark,这里先简要介绍一下,了解的可以跳过这一段直接看后面。

基本简介

Spark最初由美国加州伯克利大学(UCBerkeley)的AMP(Algorithms, Machines and People)实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。Spark在诞生之初属于研究性项目,其诸多核心理念均源自学术研究论文。2013年,Spark加入Apache孵化器项目后,开始获得迅猛的发展,如今已成为Apache软件基金会最重要的三大分布式计算系统开源项目之一(即Hadoop、Spark、Storm)。

Spark作为大数据计算平台的后起之秀,在2014年打破了Hadoop保持的基准排序(Sort Benchmark)纪录,使用206个节点在23分钟的时间里完成了100TB数据的排序,而Hadoop则是使用2000个节点在72分钟的时间里完成同样数据的排序。也就是说,Spark仅使用了十分之一的计算资源,获得了比Hadoop快3倍的速度。新纪录的诞生,使得Spark获得多方追捧,也表明了Spark可以作为一个更加快速、高效的大数据计算平台。

image.png

Spark与Hadoop区别

image.png

Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是其MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而只适用于离线批处理的应用场景。

Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题。相比于MapReduce,Spark主要具有如下优点:

  • Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比MapReduce更灵活;

  • Spark提供了内存计算,中间结果直接放到内存中,带来了更高的迭代运算效率;

  • Spark基于DAG的任务调度执行机制,要优于MapReduce的迭代执行机制。

Spark最大的特点就是将计算数据、中间结果都存储在内存中,大大减少了IO开销,因而,Spark更适合于迭代运算比较多的数据挖掘与机器学习运算。使用Hadoop进行迭代计算非常耗资源,因为每次迭代都需要从磁盘中写入、读取中间数据,IO开销大。而Spark将数据载入内存后,之后的迭代计算都可以直接使用内存中的中间结果作运算,避免了从磁盘中频繁读取数据。

在实际进行开发时,使用Hadoop需要编写不少相对底层的代码,不够高效。相对而言,Spark提供了多种高层次、简洁的API,通常情况下,对于实现相同功能的应用程序,Spark的代码量要比Hadoop少2-5倍。更重要的是,Spark提供了实时交互式编程反馈,可以方便地验证、调整算法。

尽管Spark相对于Hadoop而言具有较大优势,但Spark并不能完全替代Hadoop,主要用于替代Hadoop中的MapReduce计算模型。实际上,Spark已经很好地融入了Hadoop生态圈,并成为其中的重要一员,它可以借助于YARN实现资源调度管理,借助于HDFS实现分布式存储。此外,Hadoop可以使用廉价的、异构的机器来做分布式存储与计算,但是,Spark对硬件的要求稍高一些,对内存与CPU有一定的要求。

Spark 四大特点

运行速度快:Spark使用先进的DAG(Directed Acyclic Graph,有向无环图)执行引擎,以支持循环数据流与内存计算,基于内存的执行速度可比Hadoop MapReduce快上百倍,基于磁盘的执行速度也能快十倍。

image.png

容易使用:Spark支持使用Scala、Java、Python和R语言进行编程,简洁的API设计有助于用户轻松构建并行程序,并且可以通过Spark Shell进行交互式编程。

image.png

通用性强:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件,这些组件可以无缝整合在同一个应用中,足以应对复杂的计算。

image.png

运行模式多样:Spark可运行于独立的集群模式中,或者运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源。

image.png

EMR Serverless Spark

E-MapReduce(以下简称:"EMR")Serverless Spark 版是开源大数据平台 E-MapReduce 基于 Spark 提供的一款全托管、一站式的数据计算平台。它为用户提供任务开发、调试、发布、调度和运维等全方位的产品化服务,显著简化了大数据计算的工作流程,使用户能更专注于数据分析和价值提炼。点此一键到达

image.png

产品特性

对比开源Spark,阿里云EMR Serverless Spark最大的特点就是具有产品级特性。

image.png


云原生极速计算引擎

  • 内置Fusion Engine (Spark Native Engine),相对开源版本性能提升200%。

  • 内置Celeborn(Remote Shuffle Service),支持PB级Shuffle数据,计算资源总成本最高下降30%。

Fusion Engine 是阿里云自主研发的高性能计算引擎,它专门针对Apache Spark进行了深度优化。Fusion Engine的核心目标在于提升大数据处理的性能和效率,为用户提供超越开源Spark版本的计算体验。根据阿里云的官方信息,Fusion Engine能够将Spark的性能提升至开源Spark的2倍甚至更高,达到3倍,这对于需要大量迭代计算和数据处理的任务尤其有益。而Celeborn则是集成在Fusion Engine中的一个关键组件,专注于提升Spark在数据Shuffle阶段的性能和效率,通过改进Shuffle机制来减少数据溢出风险,降低写放大问题,并优化Shuffle Read过程中的网络传输效率,减少小包传输导致的网络问题和减轻磁盘与CPU的负载。它提供了如hash模式的Shuffle writer支持,以适应不同的并发需求。


开放化的数据湖架构

  • 支持计算存储分离,计算可弹性伸缩,存储可按量付费。

  • 对接OSS-HDFS,完全兼容HDFS的云上存储,无缝平滑迁移上云。

  • 中心化的DLF元数据,全面打通湖仓元数据。

阿里云EMR Serverless Spark的开放化数据湖架构,通过创新技术实现了数据管理与分析的新范式。它不仅支持计算与存储的分离,允许用户独立弹性扩展计算资源,同时享受按量付费的存储服务,极大地优化了成本效益。该架构无缝对接OSS-HDFS,确保与HDFS的全面兼容,不仅简化了向云端的迁移路径,还保障了数据存储的高效与可靠。更核心的是,通过集中化的DLF元数据管理,有效联通了数据湖与数据仓库的元数据,为用户提供了一个统一、透明的数据访问层,促进了跨系统数据共享与洞察挖掘的便利性,加速了数据驱动决策的进程。


一站式的开发体验

  • 提供作业开发、调试、发布、调度等一站式数据开发体验。

  • 内置版本管理、开发与生产隔离,满足企业级开发与发布标准。


Serverless的资源平台

  • 开箱即用,无需手动管理和运维云基础设施。

  • 弹性伸缩,秒级资源弹性与供给。

  • 按量付费,按实际计算资源量付费,进一步降低计算总成本。

经典应用场景

image.png

本场景涵盖了大数据处理的全链路,从数据采集接入到数据存储(统一数据湖),通过Serverless Spark实现高性能的弹性计算处理,支持多种数据应用如数据报表、数据科学项目,以及与实时计算Flink版和DataWorks集成,形成一个灵活高效、易于管理的大数据开发和运维体系,适用于企业级的数据分析和业务决策支持。

EMR Serverless Spark实践及应用体验

基础环境配置

进入EMR Serverless Spark控制台界面,选择【Spark】:

image.png

分别按要求新建DLF和OSS,最后选择为基础版即可:

image.png

点击【免费开通数据湖构建】

image.png

点击【立即开通】

image.png

进入到DLF控制台中

image.png

选择【需要启用数据湖构建服务访问外部数据源的权限】

image.png

启用数据湖构建服务访问外部数据源的权限,需要进行AliyunDLFWorkFlowDefaultRole的角色授权,点击同意授权。

image.png

接下来开始创建OSS服务。

如果有OSS资源,此处会显示已具备该服务;如果未有OSS资源,但是之前开通过OSS服务,此处也会显示已具备,点击刷新后即可进入下方主界面:

image.png

如果没有OSS资源可以直接领取:

image.png

点击进入OSS控制台,单击Bucket列表,创建Bucket,为以防万一,此处地域最好选择和DLF中一致!

image.png

创建完毕后如下所示:

image.png

再次回到E-MapReduce Serverless Spark创建界面,选择我们刚刚创建的两个资源:

image.png

完成新建,等待启动完毕:

image.png

待到启动完毕后,点击工作空间名称,进入工作空间的管理界面:

image.png

左侧就是EMR Serverless Spark的基本功能,主要分为任务开发任务管理两大模块。

image.png

快速入门

这里我们先简单做个测试,体验一下创建并发布开发任务。

在【任务目录】页签下,单击【新建】。

image.png

在新建任务对话框中,输入名称(例如test),类型使用默认的SparkSQL,然后单击确定。

image.png

创建后如下所示:

image.png

比如说我创建一个students表,并指定以Parquet格式存储,按照data_date字段进行分区,然后再插入几行数据。

CREATE TABLE IF NOT EXISTS students (
  name VARCHAR(64),
  address VARCHAR(64)
)
USING PARQUET
PARTITIONED BY (data_date STRING);


INSERT OVERWRITE TABLE students PARTITION (data_date = '${ds}') VALUES
  ('Ashua Hill', '456 Erica Ct, Cupertino'),
  ('Brian Reed', '723 Kern Ave, Palo Alto');

点击连接至SQL Compute:

image.png

确认创建:

image.png

创建成功后,点击运行即可:

image.png

执行之后,在数据目录下可以看到新增的表及对应字段:

image.png

我们再选择默认的数据库之后,可以点击发布,发布之后才能被加入工作流调度中,也就是下面的流程编排:

image.png

下面我们再创建一个test1,用来统计数量,具体方式与上文一致:

image.png

这里对上一个SQL语句的结果进行计数统计:

SELECT COUNT(1) FROM students;

执行一次后同样点击发布。

image.png

当以上两个都发布完成后,进入到【任务编排】页面,单击【创建工作流】。

image.png

填写名称为count_student,点击下一步,进入工作流画布界面:

image.png

点击【添加节点】:

image.png

此时,在任务来源下可以看到我们发布的两个任务:

image.png

依次创建两个节点,在创建第二个节点时,上游节点需选择为第一个节点:

image.png

效果如下:

image.png

点击发布工作流,可在任务编排页面下查看其运行状态

image.png

点击工作流名称,进入工作流实例列表页面,点击手动执行一次,即可看到如下所示结果:

image.png

同时,点击【工作流实例图】,可查看到工作流如下:

image.png

除此之外,在下方的运维管理中,还可以对工作空间及队列的计算单元(CU)消耗的直观监控,并支持按照时间维度进行筛选与分析。

image.png

体验及建议

前面其实也是说明了一下EMR Serverless Spark和自建Spark,值得肯定的是,EMR Serverless Spark确实是具有一定优势的,比较明显的两点是:

  • 业务敏捷性增强:不再需要自己维护基础设施了,并且在业务需求波动较大的场景下,Serverless 架构能够自动适应负载变化,无需手动调整集群规模。这意味着在业务高峰期,系统能够自动扩容以应对激增的数据处理需求,而在业务低谷期则自动缩减资源,避免了资源浪费,保证了成本效率。

  • 开发者体验提升:EMR Serverless Spark 与阿里云生态系统的紧密集成,简化了数据处理的全链路流程,从数据接入、处理、存储到分析,开发者能够在一个统一的平台上完成所有操作,极大地提升了开发效率。

但是在跟随文档操作和学习时,通过文档给出的入门案例和最佳实践是不太能够让用户直接体验到EMR Serverless Spark的强大之处的,感觉都是一些比较基础的内容,缺乏深入场景的实践和挑战性问题的解决示例,也没有办法打开用户的思路,所以我认为在产品文档的优化上还有很大的进步空间,建议增加典型的实战案例和最佳实践的示例,尤其是那些结合特定业务场景的,将能显著提升学习效率和实际应用的指导性。

对于产品功能的话是基本满足预期的,本身确实还是比较易用,尤其是对新手友好,快速上手门槛低。

这里再顺带提一下,本人目前使用maxcompute偏多,个人感觉从数据分析角度考虑maxcompute的综合能力比EMR Serverless Spark还是要强一些,并且好用一些,不过这也可能是因为我平常基本没有用到实时数据流处理等场景。所以,这里我也有一个设想,在某些情况下,如果与MaxCompute配合使用,应该可以实现大数据批处理与交互式查询的互补,为用户提供更加灵活的数据处理选项。

当然,除此之外,EMR Serverless Spark也可以结合OSS、Flink等产品,构建一个强大的数据处理和分析生态。

与OSS的结合

  • 数据湖构建:OSS作为低成本、高可靠的云存储服务,常被用作数据湖的存储层。EMR Serverless Spark可以直接读取和写入OSS中的数据,支持大规模数据的存储和分析,无需额外的数据迁移步骤。结合Paimon等表格式,可以在OSS之上构建数据湖,实现数据的统一管理和分析。

  • 数据入湖与出湖:利用OSS-HDFS服务,可以无缝桥接OSS与Hadoop生态系统,使得Spark作业能够高效访问OSS存储的数据,实现数据的快速入湖。处理后的数据也可以直接输出至OSS,便于后续的分析或分发

与Flink的结合

  • 流批一体:EMR Serverless Spark可以与实时计算Flink版相结合,基于Paimon实现流批一体的数据处理架构。在处理大规模实时数据流的同时,也能够进行批处理分析,实现数据处理的统一视图,简化数据架构。

  • 事件驱动:在某些场景下,可以通过Flink捕获实时事件数据,触发EMR Serverless Spark进行批处理或复杂分析,实现低延迟的数据处理和业务响应。这种结合可以支持实时数据处理与离线分析的无缝衔接,满足多样化的业务需求。

相关实践学习
【玩转ComfyUI】基于函数计算一键部署AI生图平台ComfyUI
本次实验将带大家通过使用阿里云产品函数计算FC,快速使用ComfyUI实现更高质量的图像生成。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
相关文章
|
SQL 分布式计算 Serverless
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
鹰角网络为应对游戏业务高频活动带来的数据潮汐、资源弹性及稳定性需求,采用阿里云 EMR Serverless Spark 替代原有架构。迁移后实现研发效率提升,支持业务快速发展、计算效率提升,增强SLA保障,稳定性提升,降低运维成本,并支撑全球化数据架构部署。
1569 56
鹰角网络:EMR Serverless Spark 在《明日方舟》游戏业务的应用
|
存储 运维 Serverless
千万级数据秒级响应!碧桂园基于 EMR Serverless StarRocks 升级存算分离架构实践
碧桂园服务通过引入 EMR Serverless StarRocks 存算分离架构,解决了海量数据处理中的资源利用率低、并发能力不足等问题,显著降低了硬件和运维成本。实时查询性能提升8倍,查询出错率减少30倍,集群数据 SLA 达99.99%。此次技术升级不仅优化了用户体验,还结合AI打造了“一看”和“—问”智能场景助力精准决策与风险预测。
1503 69
|
DataWorks 数据挖掘 Serverless
阿里云EMR Serverless StarRocks 内容合集
阿里云 EMR StarRocks 提供存算分离架构,支持实时湖仓分析,适用于多种 OLAP 场景。结合 Paimon 与 Flink,助力企业高效处理海量数据,广泛应用于游戏、教育、生活服务等领域,显著提升数据分析效率与业务响应速度。
676 0
|
存储 分布式计算 OLAP
百观科技基于阿里云 EMR 的数据湖实践分享
百观科技为应对海量复杂数据处理的算力与成本挑战,基于阿里云 EMR 构建数据湖。EMR 依托高可用的 OSS 存储、开箱即用的 Hadoop/Spark/Iceberg 等开源技术生态及弹性调度,实现数据接入、清洗、聚合与分析全流程。通过 DLF 与 Iceberg 的优化、阶梯式弹性调度(资源利用率提升至70%)及倚天 ARM 机型搭配 EMR Trino 方案,兼顾性能与成本,支撑数据分析需求,降低算力成本。
1039 59
|
人工智能 分布式计算 DataWorks
一体系数据平台的进化:基于阿里云 EMR Serverless Spark 的持续演进
本文介绍了一体系汽配供应链平台如何借助阿里云EMR Serverless Spark实现从传统Hadoop平台向云原生架构的迁移。通过融合高质量零部件供应与创新互联网科技,一体系利用EMR Serverless Spark和DataWorks构建高效数据分析体系,解决大规模数据处理瓶颈。方案涵盖实时数据集成、Lakehouse搭建、数仓分层设计及BI/ML应用支持,显著提升数据处理性能与业务响应速度,降低运维成本,为数字化转型奠定基础。最终实现研发效率提升、运维压力减轻,并推动AI技术深度整合,迈向智能化云原生数据平台。
542 4
|
SQL 存储 OLAP
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
阿里云 EMR Serverless StarRocks3.x,极速统一的湖仓新范式
976 0
|
11月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
984 30
|
12月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
1014 12
|
人工智能 开发框架 安全
Serverless MCP 运行时业界首发,函数计算让 AI 应用最后一公里提速
作为云上托管 MCP 服务的最佳运行时,函数计算 FC 为阿里云百炼 MCP 提供弹性调用能力,用户只需提交 npx 命令即可“零改造”将开源 MCP Server 部署到云上,函数计算 FC 会准备好计算资源,并以弹性、可靠的方式运行 MCP 服务,按实际调用时长和次数计费,欢迎你在阿里云百炼和函数计算 FC 上体验 MCP 服务。
1191 31

热门文章

最新文章