Spark作业提交原理

1.6 Spark作业提交原理

Spark作业(任务)提交就是使用spark中spark-sumbit命令将已经封装好成jar包的程序提交到spark集群中执行运行从而得到计算结果的过程,在提交过程中我们对提交的作业(任务)进行参数设置操作

spark提交作业的语法

bin/spark-submit \
--class <main-class>
--master <master-url> \
... # other options
<application-jar> \
[application-arguments]
参数解释
--classSpark程序中包含主函数的类
--masterSpark程序运行的模式(环境)
--deploy-modemaster设为为Yarn模式之后,使用的模式client 和 cluster
--driver-coresmaster设为为Yarn模式之后,设置driver端的的cores个数
--driver-memorymaster设为为Yarn模式之后,用于设置driver进程的内存(单位G或单位M)
--num-executorsmaster设为为Yarn模式之后,用于设置Spark作业总共要用多少个Executor进程来执行
--executor-memory指定每个executor可用内存(单位G或单位M)
--total-executor-cores 2指定所有executor使用的cpu核数为2个
--executor-cores指定每个executor使用的cpu核数
application-jar打包好的应用jar,包含依赖。这个URL在集群中全局可见。 比如hdfs:// 共享存储系统,如果是file:// path,那么所有的节点的path都包含同样的jar
application-arguments传给main()方法的参数
1.6.1 spark提交作业方式(Standalone模式)

提交Spark提供的利用蒙特·卡罗算法求π的例子,其中100这个参数是计算因子

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://qianfeng01:7077 \
--executor-memory 512m \
--total-executor-cores 2 \
/usr/local/spark-3.1.2/examples/jars/spark-examples_2.12-3.1.2.jar 100

注意:在启动任务的时候并没有指定分配资源,而是有多少资源就使用了多少资源我们在跑任务的时候是可以指定资源的,可以在指定使用核数和内存资源

1.6.2 spark提交作业方式(YARN-client模式)

提交Spark提供的利用蒙特·卡罗算法求π的例子,其中100这个参数是计算因子

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode client \
--driver-cores 1 \
--driver-memory 600M \
--executor-memory 800M \
--executor-cores 2  \
/usr/local/spark-3.1.2/examples/jars/spark-examples_2.12-3.1.2.jar 100
​
#执行结果如下:

......
2022-08-31 17:04:47,763 INFO scheduler.TaskSetManager: Finished task 99.0 in stage 0.0 (TID 99) in 20 ms on qianfeng02 (executor 2) (100/100)
2022-08-31 17:04:47,764 INFO cluster.YarnScheduler: Removed TaskSet 0.0, whose tasks have all completed, from pool
2022-08-31 17:04:47,766 INFO scheduler.DAGScheduler: ResultStage 0 (reduce at SparkPi.scala:38) finished in 1.464 s
2022-08-31 17:04:47,768 INFO scheduler.DAGScheduler: Job 0 is finished. Cancelling potential speculative or zombie tasks for this job
2022-08-31 17:04:47,768 INFO cluster.YarnScheduler: Killing all running tasks in stage 0: Stage finished
2022-08-31 17:04:47,779 INFO scheduler.DAGScheduler: Job 0 finished: reduce at SparkPi.scala:38, took 1.515996 s
Pi is roughly 3.1420551142055113
2022-08-31 17:04:47,790 INFO server.AbstractConnector: Stopped Spark@3c321bdb{HTTP/1.1, (http/1.1)}{0.0.0.0:4040}
2022-08-31 17:04:47,795 INFO ui.SparkUI: Stopped Spark web UI at http://qianfeng01:4040
......注意:在启动任务的时候并没有指定分配资源,而是有多少资源就使用了多少资源我们在跑任务的时候是可以指定资源的,可以在指定使用核数和内存资源

1.6.3 spark提交作业方式(YARN-Cluster模式)

提交Spark提供的利用蒙特·卡罗算法求π的例子,其中100这个参数是计算因子

spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-cores 1 \
--driver-memory 600M \
--executor-memory 800M \
--executor-cores 2  \
/usr/local/spark-3.1.2/examples/jars/spark-examples_2.12-3.1.2.jar 100
#执行结果
在yarn集群的web ui中对应作业的日志的最底部能看到打印结果。

注意:在启动任务的时候并没有指定分配资源,而是有多少资源就使用了多少资源我们在跑任务的时候是可以指定资源的,可以在指定使用核数和内存资源

1.6.4 YARN-Cluster和YARN-Client的区别
  • 理解YARN-Client和YARN-Cluster深层次的区别之前先清楚一个概念:Application Master。在YARN中,每个Application实例都有一个ApplicationMaster进程,它是Application启动的第一个容器。它负责和ResourceManager打交道并请求资源,获取资源之后告诉NodeManager为其启动Container。从深层次的含义讲YARN-Cluster和YARN-Client模式的区别其实就是ApplicationMaster进程的区别

  • YARN-Cluster模式下,Driver运行在AM(Application Master)中,它负责向YARN申请资源,并监督作业的运行状况。当用户提交了作业之后,就可以关掉Client,作业会继续在YARN上运行,因而YARN-Cluster模式不适合运行交互类型的作业

  • YARN-Client模式下,Application Master仅仅向YARN请求Executor,Client会和请求的Container通信来调度他们工作,也就是说Client不能离开

总结

(1)Yarn-Cluster的Driver是在集群的某一台NM上,但是Yarn-Client就是在Client的机器上; (2)Driver会和Executors进行通信,所以Yarn_Cluster在提交App之后可以关闭Client,而Yarn-Client不可以; (3)Yarn-Cluster适合生产环境,Yarn-Client适合交互和调试。

Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/220416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP ABAP给销售订单添加抬头、行项目文本

SAP ABAP给销售订单添加抬头、行项目文本 第一步&#xff1a;创建文本ID 1&#xff0c;通过SE75&#xff0c;新键文本对象的文本ID 2&#xff0c;2 &#xff0c;找到对象VBBK 销售 标题文件 3&#xff0c;点击文本IDS 4&#xff0c;进去后新建文本ID 第二步&#xff1a;通过…

使用Visual Studio(VS)创建空项目的Win32桌面应用程序【main函数入口变WinMain】

前言 在Visual Studio中直接新建Windows桌面应用程序会有很多多余的代码生成&#xff0c;本文将提供从空项目创建Win32项目的方法&#xff0c;解决新建空项目直接使用WinMain代码编译报错的问题 例如&#xff1a;LNK2019 &#xff1a;无法解析的外部符号 参考博客&#xff1…

ChibiOS简介4/5

ChibiOS简介4/5 1. 源由2. ChibiOS基础知识4/52.13 Chapter 13 - RT Synchronous Messages2.13.1 Basic concepts2.13.2 APIs 2.14 Chapter 14 - RT Events2.14.1 Basic concepts2.14.1.1 Events2.14.1.2 Operations 2.14.2 APIs 2.15 Chapter 15 - RT Debug2.15.1 Compile Tim…

【PTA刷题】堆栈模拟队列代码+详解

文章目录 题目C代码详解 题目 设已知有两个堆栈S1和S2&#xff0c;请用这两个堆栈模拟出一个队列Q。 所谓用堆栈模拟队列&#xff0c;实际上就是通过调用堆栈的下列操作函数: int IsFull(Stack S)&#xff1a;判断堆栈S是否已满&#xff0c;返回1或0&#xff1b;int IsEmpty (S…

without explicit opt-in, is unsupported. Switch Maven repository ‘maven8

Using insecure protocols with repositories, without explicit opt-in, is unsupported. Switch Maven repository maven8 大概意思是 不支持对存储库使用不安全的协议.看下maven库&#xff0c;把http开头的改成https就好了。

B站武sir-django教程(1)

day15 初识Django Python知识点&#xff1a;函数、面向对象。前端开发&#xff1a;HTML、CSS、JavaScript、jQuery、BootStrap。MySQL数据库。Python的Web框架&#xff1a; Flask&#xff0c;自身短小精悍 第三方组件。Django&#xff0c;内部已集成了很多组件 第三方组件。…

Restormer技术点小结

1. 解决cnn的不足&#xff1a; 1&#xff09;感受野有限 2&#xff09;输入尺寸固定 2. 解决transform的不足&#xff1a; 1&#xff09;计算复杂度随着空间分辨率的增加而二次增长 3. 优势结构&#xff1a;MDTA(Multi-Dconv Head Transposed Attention)和GDFN( Gated-Dco…

医疗机构,为什么要开通预约挂号服务?门诊患者双向“获利”

随着科技的不断发展&#xff0c;越来越多的医疗机构开始提供预约挂号服务&#xff0c;以更方便、快捷地为患者提供就诊服务。 减少患者在等待时间上的压力&#xff0c;让患者更加有序地安排自己的就医计划。同时&#xff0c;预约挂号还可以提高医疗门诊工作效率与患者的满意度…

Sentinel使用详解

组件简介 Sentinel是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景&#xff0c;例如秒杀、消息削峰填谷、集群流量控…

C语言 内存操作函数 +内存分区

内存操作函数 memset() //memset 函数将指定内存区域 ptr 开始的 num 个字节设置为 value。 void *memset(void *ptr, int value, size_t num);参数&#xff1a;ptr&#xff1a;指向要填充的内存区域的指针。value&#xff1a;要填充的值&#xff0c;以整数形式传递。num&…

20-11版本AUTOSAR_PRS_LogAndTraceProtocol文档翻译

1简介和概述 本协议规范规定了AUTOSAR协议Dlt的格式、消息序列和语义。 该协议允许将诊断、日志和跟踪信息发送到通信总线上。 因此&#xff0c;Dlt模块从应用程序或其他软件模块收集调试信息&#xff0c;向调试信息添加元数据&#xff0c;并将其发送到通信总线。 此外&#x…

软件设计师——信息安全(一)

&#x1f4d1;前言 本文主要是【信息安全】——软件设计师——信息安全的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304…

QStringListModel 是 Qt 框架中用于在模型-视图(Model-View)架构中展示字符串列表的类

QStringListModel 是 Qt 框架中用于在模型-视图&#xff08;Model-View&#xff09;架构中展示字符串列表的类。 QStringListModel 继承自 QAbstractListModel&#xff0c;是一个基于字符串列表的数据模型。它提供了一种方便的方式来将字符串列表作为数据源&#xff0c;供各种…

华为OD试题五(数列描述、矩阵最大值、数据分类)

1. 数列描述 示例代码&#xff1a; # 核心 从第一项 推 第N项目 # 第一项 a0 1 # 推到 第N项 N 4 def fun(a0):# 计算每一项的具体值result left 0cursor 0while cursor < len(a0):if a0[cursor] ! a0[left]:count cursor -leftresult "{}{}".format(str(…

面相对象开发的原则

1、开闭原则 对修改关闭&#xff0c;对扩展打开。 2、里氏替换原则 子类继承父类的方法时&#xff0c;不可重写父类的方法。 如果重写了父类的方法会导致整个继承体系比较差&#xff0c;特别是运用多态比较平凡时&#xff0c;程序运行出错概率较大。 如果出现了违背“里氏替换…

计网Lesson9 - 链路协议和网络概述

文章目录 数据链路层协议Ethernet V2标准Ethernet V2帧格式Ethernet V2帧长度标准以太网帧 MAC 帧协议 PPP 协议PPP 概述PPP 帧 网络层网络层的设计选择 数据链路层协议 Ethernet V2标准 Ethernet V2帧格式 以太网帧格式说明&#xff1a; 6 6 6 字节目标地址 6 6 6 字节源地…

【LeetCode每日一题】1904. 你完成的完整对局数

给你两个字符串 startTime 和 finishTime &#xff0c;均符合 "HH:MM" 格式&#xff0c;分别表示你 进入 和 退出 游戏的确切时间&#xff0c;请计算在整个游戏会话期间&#xff0c;你完成的 完整对局的对局数 。 如果 finishTime 早于 startTime &#xff0c;这表示…

verilog基础,连续赋值之组合逻辑

连续赋值语句可以完成任意组合逻辑&#xff0c;本节对基本的逻辑电路进行测试分析&#xff0c;主要包含一下内容&#xff1a; 1. 反相器 2. 与门 3.与非门 4.或门 5.或非门 6.异或门 7.同或门 verilog实现逻辑操作的算符如下 // ~ .... Invert a single-bit signal…

C语言:判断大端小端

代码实现&#xff1a; 第一种&#xff1a; ​ int main() {int a 1;char* p (char*) & a;//char* -- 访问一个字节&#xff08;第一个地址&#xff09;if (*p 1){printf("小端\n");}else{printf("大端\n");}return 0; }​ 代码解析&#xff1a; …

「Leetcode」滑动窗口—长度最小的子数组

&#x1f4bb;文章目录 &#x1f4c4;题目✏️题目解析 & 思路&#x1f4d3;总结 &#x1f4c4;题目 209. 长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …,…