Spark任务提交流程
发布日期:2021-05-06 23:31:03 浏览次数:35 分类:精选文章

本文共 2611 字,大约阅读时间需要 8 分钟。

文章目录

1.Standalone-Client

[root@node4 bin]# ./spark-submit  --master spark://node1:7077 --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

在这里插入图片描述

  • 1.Client提交任务后,Client会启动一个Driver进程。

  • 2.Client为当前的application向Master申请资源

  • 3.Master找到满足资源的Worker节点,启动Executor(内有ThreadPool,可以跑Task)

  • 4.Executor启动后,会反向注册给Driver(告诉Driver:你可以给我发Task,我有能力run)

  • 5.Driver将task发送给Executor、监控Task的执行情况,并回收结果

注意:这种模式有问题:Driver是在Client启动,每个提交的Spark Application都会有自己独立的Driver。一旦Client提交N多个Application,多个Driver和集群Worker就会产生大量通信,会造成Client网卡流量激增问题。so,该模式只适用程序测试,不适合生产环境。在Client能看到task执行结果。

2.Standalone-cluster

–deploy-mode cluster 指定运行模式

[root@node4 bin]# ./spark-submit  --master spark://node1:7077 --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

在这里插入图片描述

  • 1.(worker向master汇报)Client首先提交application,向Master申请启动Driver

  • 2.Master随机找一台满足资源的Worker节点,启动Driver

  • 3.Driver启动成功后,替Application向Master申请资源

  • 4.Master启动Worker上的Executor(内有线程池TheadPool,用来run task),Executor反向注册给Driver

  • 5.Driver向Executor发送task

注意:spark基于standalont-cluster模式提交任务,Driver是在随机一台worker上启动。如果client想提交多个application,将单节点网卡流量激增问题分散到集群中,这种模式适用于生产环境。

缺点:在client看不到task的执行和结果,只能去web ui去看

3.Yarn-Client模式

[root@node4 bin]# ./spark-submit  --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 1003种:	--master yarn	--master yarn-client	--master yarn --deploy-mode client

在这里插入图片描述

  • 1.(NodeManager向ResourceManager汇报资源)在Client提交application,首先在Client启动Driver

  • 2.Client向ResourceManager申请启动ApplicationMaster

  • 3.ResourceManager收到请求后,随机在一台NodeManager节点启动ApplicationMaster

  • 4.ApplicationMaster会向ResourceManager申请资源,用于启动Executor

  • 5.ResourceManager返回给ApplicationMaster返回一批资源(哪些NodeManager可以启动Executor)

  • 6.ApplicationMaster连接NodeManager,启动Executor(内有线程池ThreadPool,用来run task)

  • 7.各个Executor向Driver反向注册

  • 8.Driver就能发送task、监控task执行、回收结果

注意:该模式提交任务,当在Client提交多个Application,每个Application都有自己独立的Driver。Driver与集群大量通信,Client会造成网卡流量激增问题。

只适用于程序测试,不适用生产环境。在Client就能看到task的执行结果

4.Yarn-Cluster

[root@node4 bin]# ./spark-submit  --master yarn-cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 1002种:	--master yarn-cluster	--master yarn --deploy-mode cluster

在这里插入图片描述

  • 1.在client提交application,首先client向RS申请启动ApplicationMaster

  • 2.RS先随机找到一台NodeManager启动ApplicationMaster(身份就是Driver)

  • 3.ApplicationMaster向RS申请启动Executor的资源

  • 4.RS返回一批资源给ApplicationMaster

  • 5.ApplicationMaster连接那些Executor(内置ThreadPool)

  • 6.各个Executor反向注册给ApplicationMaster(充当Drvier)

  • 7.ApplicationMaster发送task、监控task执行,回收结果

注意:该模式当Client有多个application提交时,将client模式的网卡流量激增问题分散到集群,适用生产环境。在client看不到task的执行和结果,只能去webui查看

上一篇:Spark Master启动源码分析
下一篇:用Spark实现简单的单词统计

发表评论

最新留言

表示我来过!
[***.240.166.169]2025年04月08日 10时45分20秒