spark 运行架构基本由三部分组成,包括SparkContext(驱动程序),ClusterManager(集群资源管理器)和Executor(任务执行过程)组成。
其中SparkContext负责与ClusterManager通信,进行资源的申请.任务的分配.监控等,负责作业执行的声明周期管理。ClusterManager负责资源的分配和管理,在不同模式下担任的角色有所不同,在本地运行.Spark Standalone等运行模式中由Master提供,在YARN运行模式作用由Resource Manager担任,在Mesos运行模式下由Mesos Manager进行负责。当SparkContext对作业划分并分配资源后,会把任务发送给Excutor进行运行。
每个应用程序获取专属的Executor进程,这些进程在应用程序运行的过程中一直驻留,并以多线程方式运行任务。这种隔离机制有一下两种优势,一从调度来看,每个Driver段调度它的自己任务,二从运行角度,来自不同应用程序的任务运行在不同的JVM。这也意味着spark应用程序不能跨应用程序共享数据,排除将数据写入外部存储系统。
对于潜在的资源管理器来说,spark是不可知的,也就是说,spark与资源管理器无关,只要能够获取Executor进程,并能保持相互通信就可以了。
原文:https://www.cnblogs.com/playforever/p/9485977.html