第26课: Spark Runtime(Driver、Masster、Worker、Executor)内幕解密
坚持梦想,永不放弃!
本节从Spark Runtime全局的角度看Spark具体怎么工作的,从一个作业的视角通过Driver、Masster、Worker、Executor等角色来透视Spark的Runtime。本节内容包括:1、再论Spark集群部署;2、Job提交解密;3、Job的生成和接受;4、Task的运行;5、再论Shuffle。
(1)从Spark Runtime的角度来讲,包括五大核心对象:Master、Worker、Executor、Driver、CoarseGrainedExecutorBackend;
(2)Spark在做分布式集群系统设计的时候:最大化功能独立、模块化封装具体独立的对象、强内聚松耦合。
(3)当Driver中的SparkContext初始化的时候会提交程序给Master,Master如果接受该程序在Spark中运行的话,就会为当前的程序分配AppID,同时会分配具体的计算资源,需要特别注意的是,Master是根据当前提交程序的配置信息来给集群中的Worker发指令分配具体的计算资源,但是,Master发出指令后并不关心具体的资源是否已经分配,转来说Master是发指令后就记录了分配的资源,以后客户端再次提交其它的程序的话就不能使用该资源了。其弊端是可能会导致其它要提交的程序无法分配到本来应该可以分配到的计算资源;最终的优势在Spark分布式系统功能若耦合的基础上最快的运行系统(否则如果Master要等到资源最终分配成功后才通知Driver的话