Spark集群工作原理
2018-02-26 15:31 helloworld小渣渣 阅读(661) 评论(0) 收藏 举报Spark
集群工作原理
4台机器,1-Spark集群的客户端Driver 2-Master(master节点执行命令的话,久而久之会对磁盘性能产生影响,单独抽出集群客户端节点执行命令是为了让磁盘io的交互不要走master节点) 3-Worker1 4-Worker2
1.在Spark集群客户端提交一个spark命令后,会启动一个Driver进程,在Driver进程内会创建DAGScheduler、TaskScheduler对象。
2.Driver进程会把执行application所需要的jar上传到Spark集群的FTP服务器(暂时不理解FTP服务器在哪个节点)
3.Driver会向Master节点申请资源,Master会找到资源充足的Worker节点,并且在Worker节点上启动Executor进程。(Executor进程是一个JVM进程,在这个进程中有一个Threadpool,在线程池中可以执行task(Thread) )
4.Worker节点中的Executer进程启动完毕后会反向注册给Driver,此时Driver进程内的TaskScheduler对象就管理着一批Executor列表
5.Driver内的DAGScheduler遇到action类算子后,就会根据RDD的宽窄依赖切割job,划分stage,将stage中所有的task封装成taskSet发送给TaskScheduler。拥有了Executor的TaskScheduler会遍历这个TaskSet中所有的task,分发到Worker节点内的Executor执行。(task如果执行失败,TaskScheduler会重试3次。如果还是失败,会通知DAGScheduler。DAGScheduler会继续重试4次让TaskScheduler分发这个任务。)
6.Executor执行的时候,如果有需要依赖的jar包,就去集群的FTP服务上下载。

浙公网安备 33010602011771号