【Spark】spark-submit作业提交及参数设定

news2024/10/6 2:30:03

note

文章目录

  • note
  • 一、Spark的常用启动方式
    • 1.1 local本地模式
    • 1.2 Standalone模式
    • 1.3 Spark on Yarn模式
  • 二、spark-submit 详细参数说明
    • --master
    • --deploy-mode
    • --class
    • --name
    • --jars
    • --packages
    • --exclude-packages
    • --repositories
    • --py-files
    • --files
    • --conf PROP=VALUE
    • --properties-file
    • --driver-memory
    • --driver-java-options
    • --driver-library-path
    • --driver-class-path
    • --driver-cores
    • --executor-memory
    • --total-executor-cores
    • --num-executors
    • --executor-core
    • 参数设置
  • 三、模块依赖问题
  • Reference

一、Spark的常用启动方式

在这里插入图片描述

1.1 local本地模式

spark单机运行,开发测试,可以local[N]来设置使用N个线程,每个线程有一个core。spark-submit默认是spark-submit --master local,spark-shell默认是spark-shell --master local。

注:
(1)只需要把Spark的安装包解压后,改一些常用的配置即可使用,而不用启动Spark的Master、Worker守护进程,也不用启动Hadoop的各服务(除非需要用到HDFS)。
(2)SparkSubmit进程既是客户提交任务的Client进程、又是Spark的driver程序、还充当着Spark执行Task的Executor角色。

1.2 Standalone模式

1.3 Spark on Yarn模式

Yarn 模式是把资源统一交给 Yarn 集群来管理,其优点在于实现了 application 的多样性,如 MapReduce 程序、HBase 集群、Storm 集群、spark 集群等;

Yarn 模式有两种运行模式:client 和 cluster,区别在于

  • client 模式的 Driver 运行在 client 端,而 client 端可能是 spark 集群内节点,也可以不是,一般来说不是集群内节点,这就需要在客户端节点上安装程序运行所需环境,以支持 spark 的正常执行;
  • cluster 模式的 Driver 运行在 spark 集群中的某个 NodeManager 上,而且不确定到底是哪个 NodeManager 上,这由 spark 的调度策略决定,

如果知道了在哪个节点,在该节点上安装程序运行所需环境即可,

但是事实是哪个节点都有可能,这意味着需要在所有节点上安装程序运行所需环境,显然这不是个好办法;

随着 application 的增加,需要不断安装新的包,而且不同 application 可能存在版本问题,这对于 client 模式来说或许还可以接受,但 cluster 模式肯定不行的,如果集群很大,装环境会很麻烦。

一句通俗的话描述 Pyspark On Yarn:Driver 从本地电脑获取环境后分发给 Container 来执行

二、spark-submit 详细参数说明

–master

master 的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local

MASTER_URL:设置集群的主URL,用于决定任务提交到何处执行。

常见的选项有

local:提交到本地服务器执行,并分配单个线程
local[k]:提交到本地服务器执行,并分配k个线程
spark://HOST:PORT:提交到standalone模式部署的spark集群中,并指定主节点的IP与端口
mesos://HOST:PORT:提交到mesos模式部署的集群中,并指定主节点的IP与端口
yarn:提交到yarn模式部署的集群中

–deploy-mode

在本地 (client) 启动 driver 或在 cluster 上启动,默认是 client

DEPLOY_MODE:设置driver启动的位置,可选项如下,默认为client
client:在客户端上启动driver,这样逻辑运算在client上执行,任务执行在cluster上
cluster:逻辑运算与任务执行均在cluster上,cluster模式暂时不支持于Mesos集群或Python应用程序

–class

应用程序的主类,仅针对 java 或 scala 应用

CLASS_NAME:指定应用程序的类入口,即主类,仅针对java、scala程序,不作用于python程序

–name

应用程序的名称

–jars

用逗号分隔的本地 jar 包,设置后,这些 jar 将包含在 driver 和 executor 的 classpath 下

–packages

包含在driver 和executor 的 classpath 中的 jar 的 maven 坐标

–exclude-packages

为了避免冲突 ,指定的参数–package中不包含的jars包

–repositories

远程 repository

附加的远程资源库(包含jars包)等,可以通过maven坐标进行搜索

–py-files

PY_FILES:逗号隔开的的.zip、.egg、.py文件,这些文件会放置在PYTHONPATH下,该参数仅针对python应用程序

–files

FILES:逗号隔开的文件列表,这些文件将存放于每一个工作节点进程目录下

–conf PROP=VALUE

指定spark配置属性的值,格式为PROP=VALUE, 例如 --conf spark.executor.extraJavaOptions=“-XX:MaxPermSize=256m”

–properties-file

指定需要额外加载的配置文件,用逗号分隔,如果不指定,默认为 conf/spark-defaults.conf

–driver-memory

Driver内存,默认 1G

–driver-java-options

传给 driver 的额外的 Java 选项

–driver-library-path

传给 driver 的额外的库路径

–driver-class-path

传给 driver 的额外的类路径,用–jars 添加的jar包会自动包含在类路径里

–driver-cores

Driver 的核数,默认是1。在 yarn 或者 standalone 下使用

–executor-memory

每个 executor 的内存,默认是1G

–total-executor-cores

所有 executor 总共的核数。仅仅在 mesos 或者 standalone 下使用

–num-executors

启动的 executor 数量。默认为2。在 yarn 下使用

–executor-core

每个 executor 的核数。在yarn或者standalone下使用

参数设置

当–master参数设置为Standalone,–deploy-mode参数设置为cluster时,如下选项可以设置:

–driver-cores NUM:driver使用的内核数,默认为1

当–master参数设置为Standalone或者Mesos,–deploy-mode参数设置为cluster时,如下选项可以设置:

–supervise:如果设置了该参数,driver失败是会重启
–kill SUBMISSION_ID:如果设置了该参数,则会杀死指定SUBMISSION_ID的driver进程
–status SUBMISSION_ID:如果设置了该参数,则请求返回指定SUBMISSION_ID的driver的状态

当–master参数设置为Standalone或者Mesos时,如下选项可以设置:

–total-executor-cores NUM:设置集群中所有工作节点上executor使用的内核总数

当–master参数设置为Standalone或者YARN时,如下选项可以设置:

–executor-cores NUM:每个executor使用的核数

当–master参数设置为YARN时,如下选项可以设置:

–driver-cores NUM :当–deploy-mode为cluster时,driver使用的内核数,默认为1
–queue QUEUE_NAME :将任务提交给哪个YARN队列,默认为YARN的默认队列
–num-executors NUM:设置启动的executor数量,默认为2
–archives ARCHIVES :被每个executor提取到工作目录的档案列表,用逗号隔开

三、模块依赖问题

  1. Driver 负责把本地的资源分发给 Container

  2. 在 client 模式下,Driver 就找在 Client 端,可以把 client 端的资源分发,而 cluster 模式下,Driver 可在集群任一节点,该节点是没有资源的

  3. 如果是 普通依赖:

在 client 模式下,Driver 可能自动收集资源,分发,无需上传依赖;

在 cluster 模式下,Driver 无法收集资源,必须上传依赖;

  1. 如果是 复杂依赖:

在 client 模式 和 cluster 模式下,都需要通过 虚拟环境 上传依赖

  1. 在工业环境中,使用的多是 cluster 模式,cluster 模式必须上传依赖

  2. 在调试环节,多使用 client 模式,client 只需上传复杂依赖即可

Reference

[0] 官方文档spark-submit说明
[1] spark-submit提交任务及参数说明
[2] Pyspark On Yarn 的模块依赖问题
[3] Pyspark学习笔记(二)— spark-submit命令
[4] 搞懂spark-submit参数及应用程序提交(详细)
[5] PySpark on Yarn 的 Python 环境与包依赖解决方式
[6] Spark常用启动方式(三种)

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

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

相关文章

【趣学算法】Day3 贪心算法——背包问题

14天阅读挑战赛努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法! ❤️一名热爱Java的大一学生,希望与各位大佬共同学习进步❤️ 🧑个人主页:周小末天天开心 各位大…

tomcat应用部署

目录 tomcta介绍 tomcat安装 每个目录的作用 端口 实验开始 安装,启动MySQL 创建数据库 更改数据库连接 项目导入tomcat和数据库查看 重启tomcat 访问应用 【注意】 tomcta介绍 Tomcat的是完全开源的 Tomcat的是免费的 Tomcat不支持EJB 应用范围&#xff1…

创造一个表格编辑距离指标

这个是我自研的, 与百度PaddleOCR的方式略有不同。 数据的格式: 相当于一个目标检测有两类,分别是table和cell。 在预测值和标签中要先把根据位置关系所有的cell划分到不同的table中。 另外cell标签中还有起止位置 比如 四个数字代表行和…

window10远程桌面控制Ubuntu系统

Windows操作系统作为全球使用最多的个人操作系统,在我们身边随处可见,但放眼各类电子设备的操作系统,windows并不是一家独大,服务器系统大多基于Linux系统开发、手机操作系统几乎都是安卓、更不用说还有苹果的iOS、树莓派、Ubuntu…

【MySQL高级篇】数据库到底是什么?一文带你快速上手MySQL

在学习JavaWeb过程中,数据库学习是不可或缺的。整个JavaWeb体系中,数据库部分用于储存和管理数据,而数据作为网页中非常重要的一部分,自然我们是有必要深入学习数据库的。 推荐学习专栏:Java编程 进阶之路 文章目录1. …

【C语言 数据结构】顺序表的使用

本文借鉴点击跳转 上一篇:线性表的简绍 文章目录顺序表什么是顺序表顺序表的初始化顺序表插入元素顺序表删除元素顺序表 什么是顺序表 顺序表又称顺序存储结构,是线性表的一种,专门存储逻辑关系为“一对一”的数据。 顺序表存储数据的具体…

Linux~一些基本开发工具的使用(yum,vim,gcc,gdb,makefile)

目录 一.yum——安装软件 二.Vim——文本编辑器 (1).命令模式 (2).底行模式 (3).插入模式 tips:给对应用户配置sudo命令 一些注意事项 三.gcc/g——编译器 (1).gcc如何完成…

客快物流大数据项目(八十三):Kudu的优化

文章目录 Kudu的优化 一、​​​​​​​Kudu关键配置 二、​​​​​​​​​​​​​​Kudu的使用限制 1、​​​​​​​​​​​​​​主键 2、Cells 3、​​​​​​​字段 4、表 5、其他限制 6、​​​​​​​​​​​​​​分区限制 7、扩展建议和限制 8、​…

2- 创建Spring项目—— 方式1

导包: 地址:https://repo.spring.io/ui/native/libs-release-local/org/springframework/spring/ 如:包名:spring-5.2.3.RELEASE-dist.zip 将其下libs文件夹下的4个jar包导入: spring-context-5.2.3.RELEASE.jar、…

物联网ARM开发-3协议-单总线应用红外遥控

前言:单总线类传感器-红外遥控的实现 目录 一、红外遥控工作原理讲解 1、光的基础知识 2、红外通信 3、红外NEC协议详解 二、红外遥控实例讲解 1、实验目的:按下遥控按键,主机通过红外接收器接收到信号并解码,识别出按键的…

大学生计算机相关专业有什么血泪建议吗?

工作多年后才发现大学期间错过太多!!!给正在攻读CS的你,以下建议: 神级编程网站,堪称程序员的充电站,我给你找好了不能错过_程序员编程指南的博客-CSDN博客_程序员充电网站 大的课程很多&…

LA-PEG-NH2,Lipoic acid-PEG-Amine,硫辛酸PEG氨基用于量子点表面

表面反应性聚乙二醇聚乙二醇化试剂LA-PEG-NH2,又名Lipoic acid-PEG-Amine其中文名为硫辛酸-聚乙二醇-氨基。所属分类为Amine PEG Lipoic acid(LA)PEG。 该科研试剂Lipoic acid-PEG-Amine的分子量均可定制有:(5000、20…

uboot移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。 1、场景需求 X210开发板的SOC中一共有4个串口(串口0~3),并且用DB9接口引出了2个串口,分别是串口0和串口2。其中靠近网口的是串口0,远离网口…

java毕业设计——基于java+java-swing的泡泡堂网络游戏设计与实现(毕业论文+程序源码)——泡泡堂网络游戏

基于javajava-swing的泡泡堂网络游戏设计与实现(毕业论文程序源码) 大家好,今天给大家介绍基于javajava-swing的泡泡堂网络游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。 文章目录: 基于javajava-…

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---高度控制前言构建软件框架编译 cpp构建代码main函数构建构建类的定义订阅无人机里程计信息垂直位置控制串级P控制收敛结果收敛过程串级PID控制前言 无人机(Unmanned Aerial Vehicle&#…

Oracle中分割字符串的方法

Oracle中分割字符串的方法1. 使用 regexp_substr() 函数1.1 方式11.2 方式22. 自定义函数2.1 自定义类型 table2.2 自定义函数2.2.1 自定义函数2.2.2 效果如下:2.3 Oracle查看<Collection> 类型数据3.1. 使用 regexp_substr() 函数 1.1 方式…

日志三个时间,动静态库的建立与使用

文章目录日志时间ModifyChangeAccessmake与g库lddfile静态库动态库静态库静态的制作静态库的使用动态库动态库的制作动态库的使用日志时间 Modify 最近修改文件内容的时间在一定条件下,修改文件内容时,可能修改文件属性:文件大小属性改变了 …

实验2:Numpy手写多层神经网络

引言 这个作业的目的是给你们介绍建立,训练和测试神经系统网络模型。您不仅将接触到使用Python包构建神经系统网络从无到有,还有数学方面的反向传播和梯度下降。但在实际情况下,你不一定要实现神经网络从零开始(你们将在以后的实验和作…

【数据结构与算法】详解快排

目录一、快排的定义及思路二、快排的代码实现一、快排的定义及思路 快排就是快速排序,是通过不断比较和移动交换来进行排序,相当于冒泡排序的一种升级。 其基本思想是: 分而治之,也就是把一组数组分成两个独立数组,再对…

【初学者入门C语言】之结构体(十一)

个人主页:天寒雨落的博客_CSDN博客-C,CSDN竞赛,python领域博主 💬 刷题网站:一款立志于C语言的题库网站蓝桥杯ACM训练系统 - C语言网 (dotcpp.com) 特别标注:该博主将长期更新c语言内容,初学c语言的友友们&#xff0c…