Master和Worker是Spark的守护进程、集群资源管理者,即Spark在特定模式下正常运行所必须的进程。
Master和Worker 只有 Standalone模式中采用,所以Master和Worker是运行在集群模式中的。
Master 和 Worker 启动时机 随着集群的启动而启动,随着集群的停止而消失。
Driver和Executor是临时程序,当有具体任务提交到Spark集群才会开启的程序。
Driver 作用:
scala>sc.textFile("/opt/module/spark-local/input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res0: Array[(String, Int)] = Array((hadoop,6), (oozie,3), (spark,3), (hive,3), (atguigu,3), (hbase,6))
Executor作用:
生命周期:
作用: Master和Worker:只有Standalone模式中才有。 Driver和Executor:Standalone模式和YARN模式 都有。
Standalone模式是Spark自带的资源调动引擎,构建一个由Master + Slave构成的Spark集群,Spark运行在集群中。
这个要和Hadoop中的Standalone区别开来。这里的Standalone是指只用Spark来搭建一个集群,不需要借助Hadoop的Yarn和Mesos等其他框架。
Spark有standalone-client
和standalone-cluster
两种模式,主要区别在于:Driver程序的运行节点
。
该模式是由 --deploy-mode
所指定。
--deploy-mode client \
or
--deploy-mode cluster \
若指定,默认为client
模式。
standalone client与cluster模式的区别: Driver所在的位置不一样
standalone-cluster模式:
1.提交程序
scala>sc.textFile("/opt/module/spark-local/input").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
SparkSubmit
进程
在提交程序的服务器上创建一个SparkSubmit
进程,在SparkSubmit
进程中也会有一个客户端Client
,此时在客户端中并不会启动Driver
。Driver
Client
向Master
提交请求,找一个Worker
启动Driver
Driver
Master
根据任务的资源配置找到一个Worker
启动Driver
Driver
计算任务时需要资源(如:需要多少个executor,每个executor需要多少内存),此时会向 Master
申请资源。Worker
Master
并没有资源,但是它知道哪些Worker
能满足Driver
的条件。Executor
在资源充足的Worker
中启动Executor
,Executor
启动好之后表示资源已经准备好了。Executor
会向Driver
发送反向请求, 告诉它,我准备好了,你把任务给我吧。Task
到Executor
中执行。
Driver
会将Task
提交到Executor
中进行执行。Task
执行完毕后,整个任务就执行完毕了,Driver
向Master
提交申请注销自己。standalone-client模式:
SparkContext
进程Client
端,Driver
便会在Client
端中被创建。Client
回向Master
注册任务,申请资源.Master
接收到请求之后,会根据spark-submit
提交的资源参数筛选出合适的Worker
Worker
会运行一个Executor
。Executor
准备好之后,反向注册到Driver
,申请任务。Driver
便会把Job
交给Executor
进行运行。Driver
等待所有的task
运行完毕之后,此时便开始注销自己,释放资源。yarn-client模式
SparkContext
进程Client
端,Driver
便会在Client
端中被创建。Driver
向ResuoreManager
注册任务,申请运行ApplicationMaster
。ResuoreManager
收到请求之后,会找到一个NodeManager
启动一个ApplicationMaster
。ApplicationMaster
向ResuoreManager
申请资源。ResuoreManager
将会筛选出合适的NodeManager
列表给ApplicationMaster
。ApplicationMaster
会根据列表找到对应NodeManager
,运行Executor
,同时监听Executor
的运行状态Executor
会反向注册到Driver
中,申请运行任务。Driver
会将Job
交给Executor
进行运行。Task
运行完毕之后,ApplicationMaster
向ResuoreManager
提交申请注销自己,释放资源。yarn-cluster模式
yarn-client模式 与 yarn-cluster模式 唯一的区别在于Dirver
的运行位置不同。
在yarn-cluster模式中,Dirver
将会运行在ApplicationMaster
运行的服务器上。
SparkContext
进程,该进程同样维护一个Client
端。Client
向ResuortManager
注册任务,神奇运行ApplicationMaster
。ResuortManager
会找到一台NodeManager
运行ApplicationMaster
。ApplicationMaster
会启动一个Driver
进程。ApplicationMaster
向ResuortManager
申请资源。ResuortManager
筛选合适的NodeManager
列表给ApplicationMaster
。ApplicationMaster
根据列表找到对应的NodeManager
运行Executor
进程Executor
反向注册到Driver
中,申请任务Driver
将Job
交给Executor
运行Driver
中所有的Task
任务运行完毕之后,ApplicationMaster
向ResuortManager
申请注销自己,释放资源。本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有