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

打印 上一主题 下一主题

主题 2056|帖子 2056|积分 6178


文章目录
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 可以根据血统信息重新计算丢失的数据分区,实现高效的容错。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

宁睿

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表