【Spark篇】--Spark中Standalone的两种提交模式

一、前述

Spark中Standalone有两种提交模式,一个是Standalone-client模式,一个是Standalone-master模式。

二、具体

1、Standalone-client提交任务方式

  • 提交命令

./spark-submit --master  spark://node01:7077 --class org.apache.spark.examples.SparkPi  ../lib/spark-examples-1.6. 0-hadoop2.6.0.jar 100

         ./spark-submit --master  spark://node01:7077 --deploy-mode client --class org.apache.spark.examples.SparkPi  ../li b/spark-examples-1.6.0-hadoop2.6.0.jar 100

解释:--class org.apache.spark.examples.SparkPi         main函数

../lib/spark-examples-1.6.0-hadoop2.6.0.jar      jar包

            100                                                                        main函数需要参数

  • 执行原理图解
  • 执行流程

               1、client模式提交任务后,会在客户端启动Driver进程。

               2、Driver会向Master申请启动Application启动的资源。

              3、资源申请成功,Driver端将task发送到worker端执行

               4、worker将task执行结果返回到Driver端。

  • 总结

1、client模式适用于测试调试程序。Driver进程是在客户端启动的,这里的客户端就是指提交应用程序的当前节点。在Driver端可以看到task执行的情况。生产环境下不能使用client模式,是因为:假设要提交100个application到集群运行,Driver每次都会在client端启动,那么就会导致客户端100次网卡流量暴增的问题。(因为要监控task的运行情况,会占用很多端口,如上图的结果图)客户端网卡通信,都被task监控信息占用。

    2、Client端作用

                       1. Driver负责应用程序资源的申请

                       2. 任务的分发。

                       3. 结果的回收。

                       4. 监控task执行情况。

2、Standalone-cluster提交任务方式

  • 提交命令

   ./spark-submit  --master spark://node01:7077  --deploy-mode cluster --class org.apache.spark.examples.SparkPi  ../ lib/spark-examples-1.6.0-hadoop2.6.0.jar  100

  • 执行原理图解
  • 执行流程

                1、cluster模式提交应用程序后,会向Master请求启动Driver.(而不是启动application)

                2、Master接受请求,随机在集群一台节点启动Driver进程。

                3、Driver启动后为当前的应用程序申请资源。Master返回资源,并在对应的worker节点上发送消息启动Worker中的executor进程。

                4、Driver端发送task到worker节点上执行。

                5、worker将执行情况和执行结果返回给Driver端。Driver监控task任务,并回收结果。

  • 总结

<!-- li { list-style: none; margin: 0; } p { margin: 0; } span.l { color: red; font-weight: bold; } a.mapnode:link {text-decoration: none; color: black; } a.mapnode:visited {text-decoration: none; color: black; } a.mapnode:active {text-decoration: none; color: black; } a.mapnode:hover {text-decoration: none; color: black; background: #eeeee0; } -->

          1、当在客户端提交多个application时,Driver会在Woker节点上随机启动,这种模式会将单节点的网卡流量激增问题分散到集群中在客户端看不到task执行情况和结果。要去webui中看。cluster模式适用于生产环境

   2、 Master模式先启动Driver,再启动Application。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在CentOS 7上安装MySQL

MySQL是一个开源数据库管理系统,通常情况下,安装它作为流行的LEMP(Linux,Nginx,MySQL/ MariaDB,PHP / Python /Pe...

2934
来自专栏JAVA技术站

maven常用命令

mvn deploy:deploy-file -DgroupId=组名 -DartifactId=唯一标识 -Dversion=版本号 -Dpackaging=...

692
来自专栏码神联盟

Linux | 不懂Linux的码神,不是真正的菜鸟

虚拟机安装CentOS7 软件环境 虚拟机:VMware Workstation Linux:CentOS-7-x86_64-DVD-1708.iso镜像文件...

4187
来自专栏码神联盟

Nginx | Java工程师必备课 之 Linux下安装Nginx

2163
来自专栏FreeBuf

Linux下的常见错误配置

经过对大量客户的配置审计与渗透测试,我们总结出了一些Linux系统下的常见配置错误。我们相信总结、回顾这些常见错误可以在以后为我们节省更多时间与资源,更重要...

2176
来自专栏CaiRui

linux基础命令

1.mkdir 创建目录   mkdir -p 循环创建目录   touch 创建文件 2.ls 显示目录或文件   ls -ld=ll 以长目录式查看   l...

2448
来自专栏程序员互动联盟

【专业技术】编译器的工作原理

源码要运行,必须先转成二进制的机器码。这是编译器的任务。 比如,下面这段源码(假定文件名叫做test.c)。 #include <stdio.h>int ma...

3667
来自专栏云计算教程系列

如何在Ubuntu 13.10上从Binary Tarballs安装MariaDB

目前,MariaDB可以直接替代MySQL而不需要任何额外代码配置。本文将介绍如何在Ubuntu 13.10 VPS上安装MariaDB5.5.34 x86_6...

1153
来自专栏自然语言处理

真机环境下MySQL-Cluster搭建文档

MySQL cluster 和 Oracle RAC 完全不同,它采用 无共享架构Shared nothing(shared nothing arc...

832
来自专栏云计算教程系列

如何在Ubuntu 16.04上将Redis服务器设置为PHP的会话处理程序

Redis是一个开源键值缓存和存储系统,由于其对多种数据类型(如散列,列表,集合和位图等)的高级支持,也称为数据结构服务器。它还支持群集,使其在高度可用和可扩展...

1373

扫码关注云+社区

领取腾讯云代金券