StandaLone与Yarn的任务执行情况不同在于资源分配管理者不同,独立模式下是有Master负责管理,yarn模式是ResourceManager负责调度。
1、StandaLone:当集群启动后,Worker会向Master汇报资源,然后Master就会掌握Worker的集群信息。
2、Yarn:当启动集群后,NodeManager会向RsourceManager汇报资源,而RM就掌握了集群的资源。
任务提交方式有一种是client客户端,另一种是cluster集群方式,由shell命令指定模式。
Client:
1.当在客户端提交SparkApplication时,Driver会在客户端启动,客户端会向RM申请启动ApplicationMaster。
2.RM 收到请求会向随机找一个满足资源的NM启动Application Master,AM启动后,会向RM申请资源用于启动executor,RM会返回一批NM节点给AM,AM收到返回结果后,会真正的向NM中去启动executor,每个executor中会有线程池。
3.executor启动后会向Driver注册,Driver会向executor发送task,并且监控task执行,收回task执行的结果。
它的问题在于:因为Driver运行在本地,Driver会与yarn集群中的Executor进行大量的通信,会造成客户机网卡流量的大量增加,可以在客户端看到task的执行和结果.Yarn-client模式同样是适用于测试。
Cluster:
1.当客户端提交Spark Appliction。会向RM申请启动ApplictaionMaster,而RM会随机找到一个满足资源的NM去启动AM。
2.当AM启动之后它负责任务调度,所以这里就不启动Driver,而AM就相当于Driver一样的功能存在。
3.AM启动后会向RM申请启动Executor,每个Executor会由线程池,RM会返回一批满足资源的NM节点。
4.AM接收到返回结果会找到相应的NM,启动Executor,executor启动后会向AM注册,而AM会将task发送到executor去执行,并且监控task,回收task’处理的结果。
它的问题在于:Yarn-Cluster主要用于生产环境中,因为Driver运行在Yarn集群中某一台nodeManager中,每次提交任务的Driver所在的机器都是随机的,不会产生某一台机器网卡流量激增的现象,缺点是任务提交后不能看到日志。只能通过yarn查看日志。