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

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
对象存储 OSS,20GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 阿里云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进行批处理或复杂分析,实现低延迟的数据处理和业务响应。这种结合可以支持实时数据处理与离线分析的无缝衔接,满足多样化的业务需求。

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
23天前
|
消息中间件 缓存 监控
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
在FaaS中,如何设计无状态的函数来确保数据处理的一致性?
|
15天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
51 1
|
19天前
|
运维 监控 Serverless
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
29 1
|
30天前
|
存储 消息中间件 人工智能
ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用
本文整理自2024年云栖大会阿里云智能集团高级技术专家金吉祥的演讲《ApsaraMQ Serverless 能力再升级,事件驱动架构赋能 AI 应用》。
|
30天前
|
运维 Serverless 数据处理
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
Serverless架构通过提供更快的研发交付速度、降低成本、简化运维、优化资源利用、提供自动扩展能力、支持实时数据处理和快速原型开发等优势,为图像处理等计算密集型应用提供了一个高效、灵活且成本效益高的解决方案。
57 3
|
1月前
|
运维 Serverless 数据处理
Serverless架构在图像处理等计算密集型应用中展现了显著的优势
Serverless架构在图像处理等计算密集型应用中展现出显著优势,包括加速研发交付、降低成本、零运维成本、高效资源利用、自动扩展、实时数据处理及快速原型开发,为高并发、动态需求场景提供高效解决方案。
52 1
|
2月前
|
人工智能 自然语言处理 Serverless
阿里云函数计算 x NVIDIA 加速企业 AI 应用落地
阿里云函数计算与 NVIDIA TensorRT/TensorRT-LLM 展开合作,通过结合阿里云的无缝计算体验和 NVIDIA 的高性能推理库,开发者能够以更低的成本、更高的效率完成复杂的 AI 任务,加速技术落地和应用创新。
149 13
|
3月前
|
机器学习/深度学习 机器人 Serverless
FaaS 的应用场景
FaaS 的应用场景
|
3月前
|
Serverless API 异构计算
函数计算产品使用问题之修改SD模版应用的运行环境
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
3月前
|
运维 Serverless 网络安全
函数计算产品使用问题之通过仓库导入应用时无法配置域名外网访问,该如何排查
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。