
本文共 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查看
发表评论
最新留言
关于作者
