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

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

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
9天前
|
分布式计算 运维 Serverless
EMR Serverless Spark服务和EMR Serverless StarRocks服务的比较
**EMR Serverless Spark** 以其出色的稳定性、高效性能、减轻运维负担及成本优化著称,适合大规模数据处理。**EMR Serverless StarRocks** 则以高速查询、存算分离架构和灵活扩缩容见长,侧重企业级功能。两者在不同应用场景中有各自优势,选择应基于具体需求。更多详情,参考阿里云官方资源。
|
11天前
|
弹性计算 分布式计算 Serverless
全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
【7月更文挑战第6天】全托管一站式大规模数据处理和分析Serverless平台 | EMR Serverless Spark 评测
20816 42
|
9天前
|
SQL 分布式计算 Java
E-MapReduce Serverless Spark体验评测
从了解到部署实践,全方位带你体验大数据平台EMR Serverless Spark的魅力。
129 7
E-MapReduce Serverless Spark体验评测
|
1天前
|
分布式计算 Java Serverless
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
本文以 ECS 连接 EMR Serverless Spark 为例,介绍如何通过 EMR Serverless spark-submit 命令行工具进行 Spark 任务开发。
50 0
EMR Serverless Spark 实践教程 | 通过 spark-submit 命令行工具提交 Spark 任务
|
4天前
|
存储 分布式计算 运维
EMR Serverless Spark服务最佳实践测评
EMR Serverless Spark服务最佳实践测评
|
22小时前
|
存储 分布式计算 Serverless
|
2天前
|
SQL 分布式计算 Serverless
E-MapReduce Serverless Spark 评测
E-MapReduce Serverless Spark 评测
|
11天前
|
机器学习/深度学习 分布式计算 算法
Spark快速大数据分析PDF下载读书分享推荐
《Spark快速大数据分析》适合初学者,聚焦Spark实用技巧,同时深入核心概念。作者团队来自Databricks,书中详述Spark 3.0新特性,结合机器学习展示大数据分析。Spark是大数据分析的首选工具,本书助你驾驭这一利器。[PDF下载链接][1]。 ![Spark Book Cover][2] [1]: https://zhangfeidezhu.com/?p=345 [2]: https://i-blog.csdnimg.cn/direct/6b851489ad1944548602766ea9d62136.png#pic_center
38 1
Spark快速大数据分析PDF下载读书分享推荐
|
1月前
|
存储 分布式计算 Hadoop
Spark和Hadoop都是大数据处理领域的重要工具
【6月更文挑战第17天】Spark和Hadoop都是大数据处理领域的重要工具
133 59
|
13天前
|
分布式计算 大数据 Spark
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享
《Spark大数据处理:技术、应用与性能优化》深入浅出介绍Spark核心,涵盖部署、实战与性能调优,适合初学者。作者基于微软和IBM经验,解析Spark工作机制,探讨BDAS生态,提供实践案例,助力快速掌握。书中亦讨论性能优化策略。[PDF下载链接](https://zhangfeidezhu.com/?p=347)。![Spark Web UI](https://img-blog.csdnimg.cn/direct/16aaadbb4e13410f8cb2727c3786cc9e.png#pic_center)
52 1
Spark大数据处理:技术、应用与性能优化(全)PDF书籍推荐分享