• 【持续更新】Spark Submit命令 配置参数详解


    实验案例

    spark-submit \
    --master yarn \
    --name mongoToHive \
    --deploy-mode client \
    --class com.lihua.mongoToHive.DataController \
    --driver-memory 1G \
    --driver-cores 1 \
    --executor-memory 2G \
    --executor-cores 2 \
    --num-executors 4 \
    /opt/jars/mongodbToHive.jar \
    mongodb://root:root123456@192.168.1.124:27017,192.168.1.123:27017,192.168.1.125:27017/ \
    lhiot \
    "试验场" \
    thrift://192.168.1.119:9083/ \
    ods.mongo_xhdevice_mess \
    append \
    originTime \
    ${yesterdate} \
    ${yesterdate} \
    pt_d
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

     
     
     

    常用配置参数详解

    –name

    应用程序的名称,方便在webui上查看程序状况,或查看日志时进行区别。
     

    –master

    master指定的地址,提交任务到哪里执行,例如 spark://host:port, yarn, local, mesos://host:port(国外常用) 等。
    spark任务的部署方式:
    local模式(本地模式),一般调试的时候使用。
    1、【local】: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式。
    2、【local[n]】:指定使用几个线程来运行计算,比如local[n]就是运行n个worker线程。通常我们的cpu有几个core,就指定几个线程,这样可以最大化利用cpu的计算能力。
    3、【local[*]】: 该模式按照本机cpu最多cores来设置线程数,一般大家都不会可以去记自己本机的cup核数,所以这是高效省事的写法。
    cluster模式(集群模式),一般代码线上部署时使用,当然测试时也会涉及。
    1、【spark://host:port(,slave1:port,slave2:port…)】:独立部署模式,将程序提交给指定的Spark独立集群,只使用Spark自身节点运行的集群模式。Spark会自己负责资源的管理调度,它将cluster中的机器分为master机器和worker机器。生产环境一般不会把spark部署为standalone模式,除非是学习调试阶段,才会将spark部署为该模式。
    2、【yarn】:将程序提交到yarn集群,由yarn集群调度资源,指定master机器和worker机器。正式生产环境都是这种部署模式,很多时候我们需要和mapreduce使用同一个集群。
    其中yarn模式又分为yarn-cluster模式和yarn-client模式:
    【yarn-cluster】: 这个就是生产环境常用的模式,所有的资源调度和计算都在集群环境上运行。
    【yarn-client】: 这个是说Spark Driver和ApplicationMaster进程均在本机运行,而计算任务在cluster上。
    yarn-cluster和yarn-client的区别在于yarn appMaster,每个yarn app实例有一个appMaster进程,是为app启动的第一个container;负责从ResourceManager请求资源,获取到资源后,告诉NodeManager为其启动container。yarn-cluster和yarn-client模式内部实现还是有很大的区别。如果你需要用于生产环境,那么请选择yarn-cluster;而如果你仅仅是Debug程序,可以选择yarn-client。
     

    –deploy-mode

    主程序Program Driver启动的方式,默认为 client
    1、【client】:本地客户端模式,在本地启动driver,并且本地会产生一个程序的客户端。
    2、【cluster】:集群工作节点模式,由集群调度一个主节点启动driver,任务最终都会提交给主节点处理,所以在指定任务提交方式时,考虑本地客户端和集群工作节点对主节点的网络开销问题即可。
     

    –class

    应用程序的主类即入口类,仅针对 java 或 scala 应用。
     

    –packages

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

    –jars

    如果应用依赖于少量第三方的jar包,可以把它们放在这个参数里,用逗号分隔的本地jar包,设置后,这些jar包将包含在driver和executor的classpath下。
     

    –exclude-packages

    为了避免冲突 而指定不包含的package,程序加载会排除该指定下的jar包。
     

    –driver-cores

    driver使用内核数,默认为1(在yarn或者standalone模式下使用)。
    driver是驱动整个应用的主驱动程序,也可以把它理解为是主进程。
    其主要作用:
    1、将用户程序转化为作业(job)
    2、在Executor之间调度任务(task)
    3、跟踪Executor的执行情况
    4、通过UI展示查询运行情况
     

    –driver-memory

    driver内存大小,占用客户端内存,用于通信及调度开销,默认512M。
     

    –num-executors

    启动executor的数量,默认为2(在yarn模式下使用)。
    Spark Executor是集群中工作节点(Worker)中的一个JVM进程,负责在Spark 作业中运行具体任务(Task),任务彼此之间相互独立。Spark 应用启动时,Executor节点被同时启动,并且始终伴随着整个 Spark应用的生命周期而存在。如果有 Executor 节点发生了故障或崩溃,Spark 应用也可以继续执行,会将出错节点上的任务调度到其他Executor节点上继续运行。
    其主要作用:
    1、负责运行组成 Spark 应用的任务,并将结果返回给驱动器进程。
    2、它们通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储。RDD是直接缓存在 Executor 进程内的,因此任务可以在运行时充分利用缓存数据加速运算。
     

    –executor-cores

    每个executor使用的内核数,默认为1(在yarn或者standalone模式下使用,官方建议为2-5个)
     

    –executor-memory

    每个executor内存大小,占用工作节点内存,主要用于执行任务的内存开销,默认为1G。
     

    指定主驱动包及主程序给定参数

    最终,将所需配置指定完之后,需要在最后指定启动类所在的主程序包,以及主程序中需要给定的参数。

     
     
     

    非常用配置参数详解

    –conf

    指定spark配置属性的值,用于spark调优,参数格式为KEY=VALUE。
    例如:
    –conf spark.default.parallelism=1000 设置RDD分区大小,系统默认为200。
    –conf spark.storage.memoryFraction=0.5 设置内存分配大小(存储),系统默认为0.6。
    –conf spark.shuffle.memoryFraction=0.3 设置shuffle上限内存空间,系统默认为0.2。
     

    –properties-file

    用逗号隔开的文件列表,会放置在每个executor工作目录中,通过SparkFiles.get(fileName)调用。
    可以用来上传配置文件,默认路径为conf/spark-defaults.conf。
    如果使用–properties-file,在–properties-file中定义的属性就不必要在spark-sumbit中再定义了,比如在conf/spark-defaults.conf中定义了spark.master,就可以不使用–master了。如果不指定,默认使用conf/spark-defaults.conf文件中的配置。(关于Spark属性的优先权为:SparkConf方式 > 命令行参数方式 > 文件配置方式)
     

    –repositories

    远程repository储存库。
    例如:【–repositories https://oss.sonatype.org/content/groups/public/ 】
     

    –driver-java-options

    传给driver的额外的java选项。
     

    –driver-library-path

    传给driver的额外的库路径。
     

    –driver-class-path

    传给driver的额外的类路径。
     

    –total-executor-cores

    设置任务占用的总CPU核数(即任务的并发量),由主节点指定各个工作节点CPU的使用数(仅仅在mesos或者standalone模式下使用)。
     
    以上只是我遇到的一些参数配置的理解,还有一些配置我还未遇到了解,这里并没有做解释。
    感谢大家的鉴赏,欢迎大家点赞加关注,蟹蟹!

  • 相关阅读:
    音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解
    卡尔曼滤波算法的五大核心公式含义
    STL源码阅读笔记-内存空间的分配和回收
    iPhone 15 或将换成 USB-C 接口?网友:Lightning 已经落后了
    2023第十二届中国智能产业高峰论坛
    状态栏QStatusBar
    【PAT(甲级)】1061 Dating(详细的易错点)
    NOIP2022 (退役录)Goodbye OI!
    OKLink携手CertiK在港举办Web3生态安全主题论坛
    长沙上市公司董秘联谊会,来啦!
  • 原文地址:https://blog.csdn.net/weixin_42151880/article/details/127785752