Spark架构
https://blog.csdn.net/swing2008/article/details/60869183
1. 架构
cluster manager:控制整个集群,监控worker,在yarn模式中为资源管理器
worker节点:从节点,负责控制计算节点,启动executor或者driver
driver:运行application的main()函数
executor:执行器,是为某个application运行在worker node上的一个进程
2. spark运行特点
每个application获取专属的executor进程
spark与资源管理器无关,只要能够获取executor进程,并能保持通信就可以
提交sparkcontext的client应该靠近worker节点(运行executor的节点),最好是在一个rack里,因为spark application运行过程中sparkcontext和executor之间有大量的信息交换
task采用了数据本地性和推测执行的优化机制
3. 常用术语
application:用户编写的spark应用程序,包括driver功能的代码和executor代码
driver:运行上述application的main函数并创建sparkcontext,创建sparkcontext目的是为了准备spark应用程序的运行环境,在spark中有sparkcontext负责与clustermanager通信,进行资源申请、任务分配和监控,当executor部分运行完毕后,driver同时负责将sparkcontext关闭,通常用sparkcontext代表driver
executor:某个application运行在worker节点上的一个进程,该进程负责运行某些task,并且负责将数据存在内存或磁盘上
cluster manager:在集群上获取资源的外部服务,在yarn下,主要指resourcemanager
worker:集群中任何可以运行application代码的节点,在spark on yarn模式下,就是nodemanager节点
task:被送到某个executor上的工作单元,是运行application的基本单位,多个task组成一个stage,而task的调度和管理是由taskscheduler负责
job:包含多个task组成的并行计算,一个application往往会产生多个job
stage:每个job会被拆分成多组task,作为一个taskset,其名称为stage,stage的划分和调度是由dagscheduler负责的,stage有非最终的stage(shuffle map stage)和最终的stage(result stage)两种,stage的边界就是发生shuffle的地方