当前位置: 首页 > news >正文

Spark---基于Standalone模式提交任务

Standalone模式两种提交任务方式

一、Standalone-client提交任务方式

1、提交命令

./spark-submit --master spark://mynode1:7077  
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

或者

./spark-submit --master spark://mynode1:7077 
--deploy-mode client  
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

2、执行原理图解

1)、执行流程

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

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

3、Master收到请求之后会在对应的Worker节点上启动Executor

4、Executor启动之后,会注册给Driver端,Driver掌握一批计算资源

5、Driver端将task发送到worker端执行。worker将task执行结果返回到Driver端。

2)、总结

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

二、Standalone-cluster提交任务方式

1、提交命令

./spark-submit --master spark://mynode1:7077 
--deploy-mode cluster
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.1.jar 100

2、执行原理图解

1)、执行流程

1、cluster模式提交应用程序后,会向Master请求启动Driver

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

3、Driver启动后为当前的应用程序申请资源

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

5、worker将执行情况和执行结果返回给Driver端

2)、总结

Driver进程是在集群某一台Worker上启动的,在客户端是无法查看task的执行情况的。假设要提交100个application到集群运行,每次Driver会随机在集群中某一台Worker上启动,那么这100次网卡流量暴增的问题就散布在集群上。

  • 总结Standalone两种方式提交任务,Driver与集群的通信包括:

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

2. 任务的分发。

3. 结果的回收。

4. 监控task执行情况。

相关文章:

  • 三十分钟学会Shell(上)
  • 51单片机的智能浇花系统【含proteus仿真+程序+报告+原理图】
  • vue3的 nextTick()的使用
  • leetcode 240. 搜索二维矩阵 II
  • [Android]使用Retrofit进行网络请求
  • 含分布式电源的配电网可靠性评估(matlab代码)
  • vue2.0+elementui集成file-loader之后图标失效问题
  • 安徽省广德市选择云轴科技ZStack Cloud云平台建设县级智慧城市
  • SQL注入漏洞发现和利用,以及SQL注入的防护
  • 【精选】Ajax技术知识点合集
  • centos7 系统keepalived 定时执行脚本
  • 百度智能云正式上线Python SDK版本并全面开源
  • SQL Server数据库自动备份方法
  • 机器学习第12天:聚类
  • python二叉树链树_树的链式存储结构
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【前端学习】-粗谈选择器
  • android图片蒙层
  • css布局,左右固定中间自适应实现
  • es6--symbol
  • ES6简单总结(搭配简单的讲解和小案例)
  • ES6之路之模块详解
  • go append函数以及写入
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript对象详解
  • vuex 笔记整理
  • 仿天猫超市收藏抛物线动画工具库
  • 七牛云假注销小指南
  • 我的面试准备过程--容器(更新中)
  • 再谈express与koa的对比
  • ​香农与信息论三大定律
  • # Apache SeaTunnel 究竟是什么?
  • #define与typedef区别
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (没学懂,待填坑)【动态规划】数位动态规划
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .Net中的设计模式——Factory Method模式
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Autowired注解的实现原理
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题
  • @WebServiceClient注解,wsdlLocation 可配置
  • [20180129]bash显示path环境变量.txt
  • [autojs]逍遥模拟器和vscode对接
  • [Avalon] Avalon中的Conditional Formatting.
  • [C++] cout、wcout无法正常输出中文字符问题的深入调查(1):各种编译器测试
  • [Codeforces1137D]Cooperative Game
  • [CSS]盒子模型
  • [hdu 1247]Hat’s Words [Trie 图]
  • [IE技巧] IE8中HTTP连接数目的变化
  • [LWC] Components Communication