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

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

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
相关文章
|
7天前
|
分布式计算 运维 Serverless
EMR Serverless Spark PySpark流任务体验报告
阿里云EMR Serverless Spark是一款全托管的云原生大数据计算服务,旨在简化数据处理流程,降低运维成本。测评者通过EMR Serverless Spark提交PySpark流任务,体验了从环境准备、集群创建、网络连接到任务管理的全过程。通过这次测评,可以看出阿里云EMR Serverless Spark适合有一定技术基础的企业,尤其是需要高效处理大规模数据的场景,但新用户需要投入时间和精力学习和适应。
88 42
|
4天前
|
Cloud Native 安全 开发者
云原生架构的演进与实践:从微服务到无服务器计算
本文深入探讨了云原生技术的最新进展,特别关注微服务和无服务器计算模型。通过分析相关研究数据和行业案例,文章揭示了云原生架构如何推动现代应用开发,提升运维效率,并实现资源的最优化配置。文中详细讨论了云原生生态系统中的关键组成部分,包括容器化、自动化管理工具和服务网格,以及它们如何共同促进敏捷性和可扩展性。此外,文章还分析了云原生安全策略的重要性,以及如何在保障安全的同时,保持系统的灵活性和高效性。
|
9天前
|
分布式计算 Serverless 数据处理
Serverless Spark计算服务
Serverless Spark计算服务
|
13天前
|
分布式计算 Serverless 数据处理
EMR Serverless Spark服务体验评测
随着云计算的普及和大数据技术的快速发展,企业对于数据处理与分析的需求日益增加。EMR Serverless Spark作为一款云原生、全托管的Spark计算产品,旨在为企业提供一站式的数据处理解决方案。本文将对EMR Serverless Spark服务进行体验评测,重点关注产品内引导、功能满足度、改进建议以及可能的联动组合等方面。
|
2月前
|
分布式计算 Hadoop 大数据
大数据技术与Python:结合Spark和Hadoop进行分布式计算
【4月更文挑战第12天】本文介绍了大数据技术及其4V特性,阐述了Hadoop和Spark在大数据处理中的作用。Hadoop提供分布式文件系统和MapReduce,Spark则为内存计算提供快速处理能力。通过Python结合Spark和Hadoop,可在分布式环境中进行数据处理和分析。文章详细讲解了如何配置Python环境、安装Spark和Hadoop,以及使用Python编写和提交代码到集群进行计算。掌握这些技能有助于应对大数据挑战。
|
17天前
|
存储 分布式计算 Hadoop
Spark和Hadoop都是大数据处理领域的重要工具
【6月更文挑战第17天】Spark和Hadoop都是大数据处理领域的重要工具
118 59
|
3天前
|
分布式计算 资源调度 Hadoop
Java大数据处理:Spark与Hadoop整合
Java大数据处理:Spark与Hadoop整合
|
21天前
|
分布式计算 大数据 数据处理
Apache Spark在大数据处理中的应用
Apache Spark是大数据处理的热门工具,由AMPLab开发并捐赠给Apache软件基金会。它以内存计算和优化的执行引擎著称,提供比Hadoop更快的处理速度,支持批处理、交互式查询、流处理和机器学习。Spark架构包括Driver、Master、Worker Node和Executor,核心组件有RDD、DataFrame、Dataset、Spark SQL、Spark Streaming、MLlib和GraphX。文章通过代码示例展示了Spark在批处理、交互式查询和实时数据处理中的应用,并讨论了其优势(高性能、易用性、通用性和集成性)和挑战。【6月更文挑战第11天】
46 6
|
18天前
|
分布式计算 Hadoop 大数据
大数据技术:Hadoop与Spark的对比
【6月更文挑战第15天】**Hadoop与Spark对比摘要** Hadoop是分布式系统基础架构,擅长处理大规模批处理任务,依赖HDFS和MapReduce,具有高可靠性和生态多样性。Spark是快速数据处理引擎,侧重内存计算,提供多语言接口,支持机器学习和流处理,处理速度远超Hadoop,适合实时分析和交互式查询。两者在资源占用和生态系统上有差异,适用于不同应用场景。选择时需依据具体需求。
|
22天前
|
分布式计算 Kubernetes Spark
大数据之spark on k8s
大数据之spark on k8s