Spark架构
架构图如下:
spark架构.jpg
Spark结构主要分为四个部分:
用来提交作业的Client程序:client是什么呢,比如spark中提交程序的shell窗口,宏观上讲,是一台提交程序的物理机。负责将打包好的spark程序提交到集群中,提交完程序这个客户端客户端程序还发挥什么作用呢?yarn-client模式下,客户端提交程序后,在该客户端上又运行着一个driver程序,这个client的作用持续到spark程序运行完毕,而yarn-cluster模式下,客户端提交程序后就不再发挥任何作用,也就是说仅仅发挥了提交程序包的作用。
用来驱动程序运行的Driver程序:driver完成的工作主要是创建用户的上下文,这个上下文中包括很多控件比如DADScheduler、TaskScheduler等等,这些控件完成的工作也称为driver完成的。driver中完成RDD的生成,将RDD划分成有向无环图,生成task,接受master的指示将task发送到worker节点上进行执行等工作。
用来进行资源调度的ClusterManager: 整个集群的master,主要完成资源的调度,涉及一些调度算法,自带的资源管理器只支持FIFO调度,yarn和mesos还支持其他方式的调度算发。CM一边和driver打交道 ,一边和worker打交道,driver向CM申请资源,worker通过心跳机制向CM汇报自己的资源和运行情况,CM告诉driver应该向哪些worker发送消息, 然后driver把task发送到这些可用的worker上
用来执行程序的worker:worker用多个executor来执行程序
整个Spark集群采用的是master-slaver模型,master(CluserManager)负责集群整体资源的调度和管理并管理worker,worker管理其上的executor。
作者:dpengwang
链接:https://www.jianshu.com/p/df241432f475