一、什么是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的核心组件:
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(计算)之间的解耦合。