spark应用程序在集群上通过一组独立的进程运行。在每个应用程序的主进程里,都有一个sparkContext对象,也被称为驱动程序,就是这个sparkContext对象负责与集群协调资源。具体来说,要在集群上运行,sparkContext可以连接多种不同的集群管理器(无论是spark自己的集群管理器还是Mesos or YARN).这些集群管理器为这些应用程序分配资源。
sparkContext连接上集群管理器后,从集群的节点上获取一个执行体(executors),这个执行体为应用程序提供计算环境和数据存储功能;接着,sparContext把应用程序(一个jar包或者python程序)发送给前面获取到的executors.最后,sparContext发送任务给executors执行。
这个架构有几个值得注意的关键点:
1.每个应用程序都有自己的执行进程,这些进程为应用程序的整个生命周期服务,通过在多个线程上运行的多个任务。
这样做的好处是将不同的应用程序