1.1.1.Executor进程专属 每个Application获取专属的executor进程,该进程在Application期间一直驻留,并以多线程方式运行tasks。 Spark Application不能跨应用程序共享数据,除非将数据写入到外部存储系统。 如图所示: 1.1.2. 支持多种资源管理器 Spark与资源管理器无关,只要能够获取executor进程,并能保持相互通信就可以了, Spark支持资源管理器包含: Standalone、On Mesos、On YARN、Or On EC2。 如图所示: 1.1.3. Job提交就近原则 提交SparkContext的Client应该靠近Worker节点(运行Executor的节点),最好是在同一个Rack(机架)里, 因为Spark Application运行过程中SparkContext和Executor之间有大量的信息交换; 如果想在远程集群中运行,最好使用RPC将SparkContext提交给集群,不要远离Worker运行SparkContext。 如图所示: 1.1.4. 移动程序而非移动数据的原则执行 Task采用了数据本地性和推测执行的优化机制。 关键方法:taskIdToLocations、getPreferedLocations。 如图所示: