在Spark中一个Application的执行流程可以表示为:
即:当Spark集群启动的时候,首先启动Master进程负责整个集群资源的管理和分配,并接受作业的提交,且为作业分配计算资源。每个工作节点默认情况下都会启动一个Worker Process来管理当前节点的Memory和CPU等计算资源,并向Master汇报Worker还能够正常工作;当用户提交作业给Master的时候,Master会为程序分配ID并分配计算资源,默认情况下会为当前的应用程序在每个Worker Process下面分配一个CoarseGrainedEcecutorBachend进程,该进程默认情况下会最大化的使用当前节点的内存和CPU。
在此过程中需要注意以下几个问题:
1、我们说Worker Process管理当前节点的内存和CPU等计算资源,实质上是通过Master来管理每台机器上的计算资源的。
2、Worker节点上有Worker Process,Worker Process会接受Master的指令为当前要运行的应用程序分配CoarseGrainedEcecutorBachend进程。
3、Stage里面的内容一定是在Executor中执行的,而且Stage必须是从前往后执行。
4、Spark的一个应用程序中可以因为不同的Action产生不同的job,每个job至少有一个Stage。