SparkContext是Spark Application程序的表示。在Driver程序中首先创建SparkContext对象,在创建这个对象的时候,Spark Application运行需要的重要参数会在这里初始化。下面的图表述了SparkContext创建初始化的重要参数。

sparksession对象如何设置driver的内存 spark content_序列化


DAGSchedule的作用:Spark Stage的切分等功能,它主要描述了Spark Application如何在集群中运行

TaskScheduler的作用:负责Application任务的调度的具体执行,比如提交任务、取消任务、任务完成后的处理等

驱动SchedulerBackend的作用:不同的运行模式,驱动SchedulerBackend的类型不同,比如Standalone模式是SparkDeploySchedulerBackend,它的父类是CoarseGrainedSchedulerBackend。驱动SchedulerBackend是驱动在集群上的表示,它负责设置用来于Executor通信的驱动Url、包装spark application的运行参数用于和Master通信,接收并处理请求资源的消息等。它的非常重要的成员是创建用于和Master通信的AppClient,AppClient可以向Master发起注册Application的事件,并且告诉Master如何为Application分配资源。它跟TaskScheduler联系比较紧密,它负责消息的接收,但是具体消息的处理由TaskScheduler实现。

SparkEnv为Spark Application运行提供了支撑,Driver和Executor都有自己的SparkEnv。Driver的SparkEnv作用为:


Executor ID为字符串Driver


用于各个节点通信使用的RpcEnv


Driver端用于跟踪map output信息的数据结构 MapOutputTrackerMaster


用于存储数据序列化的类 serializer


用于closure序列化的类closureserializer


用于cache数据管理的数据结构CacheManager


用于shuffle管理的数据结构ShuffleManager


用于管理广播变量的数据结构BroadcastManager


用于提供block在节点间传递服务的数据结构BlockTransferManager,具体实现为NioBlockTransferManager或者NettyBlockTransferManager


用于RDD数据存储的数据结构BlockManager


用于保证Spark节点间通信和Spark不同用户间安全使用的数据结构SecurityManager


用于提供Spark Application程序中的jar包文件或者解释器产生的代码(比如说spark-shell)文件服务的数据结构HttpFileServer


用于Shuffle内存管理的数据结构ShuffleMemoryManager


用于存储下载依赖文件的目录


数据结构MetricSystem


用于Executor内存管理的数据结构ExecutorMemoryManager


用于管理输出数据消息响应的endpoint数据结构OutputCommitCoordinatorEndpoint



Executor的SparkEnv的作用为:


Exiecutor ID为数字,比如1、2、3等


创建用于各个节点通信使用的数据结构RpcEnv


Executor端获取MapOutputTrackerMaster产生的map output信息的数据结构  MapOutputTrackerWorker


用于存储数据序列化的类 serializer


用于closure序列化的类closureserializer


用于cache数据管理的数据结构CacheManager


用于shuffle管理的数据结构ShuffleManager


用于管理广播变量的数据结构BroadcastManager


用于提供block在节点间传递服务的数据结构BlockTransferManager,具体实现为NioBlockTransferManager或者NettyBlockTransferManager


用于RDD数据存储的数据结构BlockManager


用于保证Spark节点间通信和Spark不同用户间安全使用的数据结构SecurityManager


Executor无HttpFileServer服务


用于Shuffle内存管理的数据结构ShuffleMemoryManager


用于存储下载依赖文件的目录


数据结构MetricSystem


用于Executor内存管理的数据结构ExecutorMemoryManager


用于管理输出数据消息响应的endpoint数据结构OutputCommitCoordinatorEndpoint