1. Spark运行原理
(1)sparkContext向资源管理器注册并申请资源
(2)资源管理器根据预先设定的算法,在资源池里分配合适的Executor运行资源
(3)应用(Main函数里的算子)构建有向无环图
(4)DAGScheduler将图转换成TaskSet
(5)TaskScheduler负责TaskSet的任务分发。
2. Spark on Yarn
2.1 Yarn-Cluster模式
(1)ResourceManager接到请求后在集群中选择一个NodeManager分配Container,并在Container中启动ApplicationMaster进程;
(2)在ApplicationMaster进程中初始化sparkContext;
(3)ApplicationMaster向ResourceManager申请到Container后,通知NodeManager在获得的Container中启动excutor进程;
(4)sparkContext分配Task给excutor,excutor发送运行状态给ApplicationMaster。
2.2 Yarn-Client模式
(1)ResourceManager接到请求后在集群中选择一个NodeManager分配Container,并在Container中启动ApplicationMaster进程;
(2)driver进程运行在client中,并初始化sparkContext;
(3)sparkContext初始化完后与ApplicationMaster通讯,通过ApplicationMaster向ResourceManager申请Container,ApplicationMaster通知NodeManager在获得的Container中启动excutor进程;
(4)sparkContext分配Task给excutor,excutor发送运行状态给driver。