一、什么是 Spark?
Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。因为以内存为基础,所以可以比 MapReduce 更快的处理数据。
Spark 采用了 RDD(弹性分布式数据集)这一抽象概念,提供了高效的数据存储和处理方式。Spark 还具有较好的容错能力和可伸缩性,允许在集群上动态添加和删除节点,使得计算资源能够随着数据量和计算任务的变化而实现弹性扩展。
二、Spark 的核心模块:
Spark Core:Spark Core 中提供了 Spark 最基础与最核心的功能,Spark 的其他功能如:Spark SQL、Spark Streaming、GraphX、MLlib 都是在 Spark Core 的基础上进行扩展的。
Spark SQL:Spark SQL 是 Spark 用来操作结构化数据的组件。通过 Spark SQL,用户可以使用 SQL 或 Hive 来查询数据。
Spark Streaming:Spark Streaming 是 Spark 平台上针对实时数据进行流式计算的组件,提供了丰富的处理数据流的 API。
三、Spark 的核心组件:
看组件之前,先看一下 Spark 的运行架构:
Spark 框架的核心是一个计算引擎,整体来说,它采用了标准的 master-slave 主备结构。
如上图所示,它展示了一个 Spark 执行时的基本结构。图形中的 Driver 表示 master,负责管理整个集群中的作业任务调度。图形中的 Executor 则是 slave,负责实际执行任务。
Spark 的核心组件:
Master 和 Worker 用于资源调度的,Driver 和 Executor 用于计算的。
1.Master:master 是一个进程,负责资源的调度和分配,并进行集群的监控等职责。类似于 YARN 中的 ResourceManager。
2.Worker:worker 也是进程,一个 Worker 运行在集群中的一台服务器上,由 Master 分配资源对数据进行并行的处理和计算,类似于 YARN 中的 NameNode。
3.Driver:主要是执行程序的 main 方法,创建 SparkContext 对象。
4.Executor:executor 是集群中工作结点(Worker)中的一个 JVM 进程,负责在 Spark 中运行具体的任务(Task)。
5.ApplicationMaster:用于 ResourceManager(资源)和 Driver(计算)之间的解耦合。