1/ Spark集群
Master:
Worker:
2/ Cluster manager:在集群上获取资源的外部服务
Standalone:Spark原生的资源管理,由Master负责资源分配
Hadoop Yarn:由Yarn中的ResourceManager负责资源分配
3/ Application:用户提交的应用程序
Driver(SparkContext):与Cluster Manager通信,进行资源申请
用户提交的应用程序的划分
4/ Driver向Master(standalone)申请资源
5/ Master负责安排Worker,Worker负责启动Executor(进程)运行Task
6/ 运行过程,Dirver和Executor通信
问题:
1/ Yarn中的ResourceManager分配的是Spark中的Wroker还是Yarn中的NodeManager运行Task?
2/ 应用程序的划分?
3/ 不同的Application可以共享数据吗?
每个Application获取专属的executor进程,该进程在Application期间一直驻留,并以多线程方式运行tasks。这种Application隔离机制有其优势的,无论是从调度角度看(每个Driver调度它自己的任务),还是从运行角度看(来自不同Application的Task运行在不同的JVM中)。当然,这也意味着Spark Application不能跨应用程序共享数据,除非将数据写入到外部存储系统
4/ Driver运行在哪里?
要根据spark-submit的提交方式:
a. Spark Standalone Mode:
Client Mode: Driver的启动和提交应用程序的客户端在同一个进程
Cluster Mode: Driver得启动是在集群中的一个Wrok进程,并且客户端进程在履行完应用程序的提交责任后立即退出,而不是等应用程序执行完
b. Yarn
5/ Master怎么知道分配那些Wroker?
Worker向Master发送心跳