集群模式的相关概念:
1.集群遵循主(Master)-从(Worker)机构:在不同的集群管理器模式下,Master和Worker映射的内容有所不同
在Standalone模式下:主【Master守护进程】和从【Worker守护进程】
在on Yarn模式下: 主【ResourceManager守护进程】和从【Nodemanager守护进程】
2.Spark基本概念(参照Spark运行结构图):
Application(应用程序):是指用户编写的Spark应用程序,包含驱动程序(Driver)和分布在集群中多个节点上运行的Executor代码,在执行过程中由一个或多个作业组成。
驱动器(Driver):Spark中的Driver即运行上述Application的main函数并且创建SparkContext,其中创建SparkContext的目的是为了准备 Spark应用程序的运行环境,在Spark中由SparkContext负责与ClusterManager通信,进行资源的申请,任务的分配和监控等;当Executor部分运行完毕后,Driver负责将SparkContext关闭. 通常用SparkContext代表Driver.
3.Cluster Management(集群管理器): 是指在集群上获取资源的外部服务,目前有以下几种
1)Standalone: Spark原生的资源管理,由Master负责资源的管理
2)Hadoop Yarn:由Yarn中的ResoureManager负责资源部的管理
3)Mesos:由Mesos中的Mesos Master负责资源的管理
a. Worker(工作节点):集群中任何可以运行Application代码的节点,类似于Yarn中的NodeManager节点。
在Standalone模式中指的就是通过Slaves文件配置的worker节点,在Spark on yarn 中指的就是NodeManager节点
b. Master(总控制进程):Spark Standalone运行模式下的主节点,负责管理和分配集群资源来运行Spark Application。
c.Executor(执行进程):Application运行在worker节点上的一个进程,该进程负责运行Task,并负责将数据存在内存或磁盘上,
每个Application都有各自独立的一批Executor,在spark on yarn模式下,其进程名为CoarseGrainedExecutorBackend,
类似于hadoop MapReduce中的yarnChid.一个CoarseGrainedExecutorBackend进程有且仅有一个executor对象,
它负责将Task包装成taskRunner,并从线程池中抽取出一个空闲线程运行Task.
每个CoarseGrainedExecutorBackend能并行运行Task的数量取决于分配给它的CPU个数
(hadoop中一个节点同时运行2个map,spark中的任务同时运行在执行器上)
Executor执行器作用:
1.Spark执行器节点是一种工作进程,负责在Spark作业中运行任务,任务间相互独立。
2.Spark应用启动时,执行器节点就被同时启动,并且始终伴随着整个Spark应用的生命周期而存在。
d.TaskInputSplit与Task是一一对应的关系,这些具体的Task每个都会被分配到集群上的某个节点的某个Executor去执行
每个节点可以起(启动)一个或多个Executor。
每个Executor由若干core组成,每个Executor的每个core一次只能执行一个Task。
(core是虚拟的cor