一、yarn-client任务提交方式
1.任务提交方式
./spark-submit --master yarn --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
./spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
./spark-submit --master yarn-client --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
2.执行流程图
3.任务执行流程
3.1 NodeManager向ResourceManager汇报资源,ResourceManager掌握NodeManager的资源
3.2 客户端提交任务application,并启动Driver
3.3 Driver向ResourceManager申请启动ApplicationMaster
3.4 ResourceManager随机在集群中选取一台NodeManager开启ApplicationMaster
3.5 ApplicationMaster开启后,会向ResourceManager申请一批Container(容器资源),用于启动Executor,
3.6 ResourceManager向ApplicationMaster返回一批NodeManager
3.7 ApplicationMaster去返回的NodeManager上启动Executor,在启动完成后,Executor向Driver反向注册。
3.8 Driver向Executor发送task,Executor将task的运行状况、运行结果发送给Driver
4.注意
和Standalone一样,Driver在客户端,如果提交的任务过多,会导致网卡流量激增,出现问题
ApplicationMaster的作用:
1.为Application申请资源
2.向NodeManager发送消息,启动executor
二、yarn-cluster
1.任务提交方式
./spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
./spark-submit --master yarn-cluster--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100
2.任务执行流程图
3.任务执行流程
3.1 客户端提交application任务
3.2 向ResourceManager请求启动ApplicationMaster
3.3 ResourceManager随机选取一台NodeManager启动ApplicationMaster(相当于是Driver)
3.4 ApplicationMaster向ResourceManager申请Container,用于启动executor
3.5 ApplicationMaster向申请的NodeManager发送命令,启动executor
3.6 executor反向注册到Driver上
3.7 Driver向executor发送task
3.8 executor向Driver返回task执行情况以及执行结果
4.注意:
Driver会在集群中的节点上随机启动,这样单节点网卡流量激增的风险解决,但是,这时无法在客户端看到任务执行流程。只能通过yarn日志查看