大数据Spark(五十七):Spark运行架构与MapReduce区别

文章目录

Spark运行架构与MapReduce区别

一、Spark运行架构

二、Spark与MapReduce区别


Spark运行架构与MapReduce区别

一、Spark运行架构

  • Master:Spark集群中资源管理主节点,负责管理Worker节点。
  • Worker:Spark集群中资源管理的从节点,负责任务的运行。
  • Application:Spark用户运行程序,包含Driver端和在各个Worker运行的Executor端。
  • Driver:用来连接Worker的程序,Driver可以将Task发送到Worker节点处理这些数据。每个Spark Application都有独立的Driver,Driver负责任务(Tasks)的分发和结果回收。如果task的计算结果非常大就不要回收了,可能会造成oom。
  • Executor :Worker节点上运行的进程,负责执行Task,将数据存储在内存或者磁盘中,并将结果返回给Driver。每个Application都有各自独立的一批Executors。
  • Task:被发送到某个Executor上的工作单元。

二、Spark与MapReduce区别

Apache Spark 和 Hadoop MapReduce 都是用于大规模数据处理的分布式计算框架,但它们在架构设计、数据处理方式和应用场景等方面存在显著差异。以下是两者的主要区别:

1) 数据处理方式

MapReduce:采用基于磁盘的处理方式,每个任务的中间结果需要写入磁盘,然后再读取进行下一步处理。这种方式增加了磁盘 I/O 操作,导致处理速度较慢。

Spark:利用内存进行数据处理,将中间结果存储在内存中,减少了磁盘读写操作,从而显著提高了处理速度。特别是在需要多次迭代计算的场景下,Spark 的性能优势更加明显。

2) 编程模型

MapReduce:提供了相对低级的编程接口,主要包含 Map 和 Reduce 两个操作,开发者需要编写较多的代码来实现复杂的数据处理逻辑。

Spark:提供了更高级的编程接口,如 RDD(弹性分布式数据集)和 DataFrame,支持丰富的操作算子,使得开发者可以以更简洁的方式编写复杂的处理逻辑。此外,Spark支持SQL处理批/流数据。

3) 任务调度

MapReduce:采用多进程模型,每个Task任务作为一个独立的JVM进程运行。

Spark:采用多线程模型,在同一个进程中管理多个Task任务,资源调度更为高效。

4) 资源申请

MapReduce:采用细粒度资源调度,每个 MapReduce Job 运行前申请资源,Job运行完释放资源。如果一个Application中有多个 MapReduce Job,每个Job独立申请和释放资源。

Spark:采用粗粒度资源调度。Application运行前,为所有的Spark Job申请资源,所有Job执行完成后,统一释放资源。

5) 数据处理能力

MapReduce:主要用于批处理任务,不适合实时数据处理。

Spark:适用于批量/实时数据处理。通过 SparkStreaming 和 StructuredStreaming 模块,支持实时数据流处理。

6) 容错机制

MapReduce:通过将中间结果写入磁盘,实现任务失败后的重试和恢复。

Spark:采用 RDD 的血统(lineage)机制,记录数据集的生成过程。当节点发生故障时,Spark 可以根据血统信息重新计算丢失的数据分区,实现高效的容错。


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨
相关推荐
INFINI Labs几秒前
INFINI Console 纳管 Elasticsearch 9(一):指标监控、数据管理、DSL 语句执行
大数据·elasticsearch·搜索引擎·console
镜舟科技1 小时前
湖仓一体架构在金融典型数据分析场景中的实践
starrocks·金融·架构·数据分析·湖仓一体·物化视图·lakehouse
Ramseyuu1 小时前
Mybatis-plus
微服务·云原生·架构
姬激薄1 小时前
什么是SparkONYarn模式
spark
猪猪果泡酒1 小时前
Spark,RDD中的行动算子
大数据·分布式·spark
charlie1145141912 小时前
内核深入学习3——分析ARM32和ARM64体系架构下的Linux内存区域示意图与页表的建立流程
linux·学习·架构·内存管理
2401_871290582 小时前
Spark处理过程-转换算子
大数据·分布式·spark
Betty_蹄蹄boo2 小时前
运行Spark程序-在Spark-shell——RDD
大数据·分布式·spark
李恒-聆机智能专精数采2 小时前
从零开始了解数据采集(二十七)——什么IIOT平台
大数据·人工智能·云计算·制造·数据采集·数据可视化
Caron_xcb3 小时前
大数据——解决Matplotlib 字体不足问题(Linux\mac\windows)
大数据·linux·matplotlib