spark的脚本提交参数

1、kill掉某个spark任务
yarn application -kill application_1610416974403_25645
2、 拉取某个spark运行日志的命令
yarn logs -applicationId application_1610416974403_25645 > log.txt # 将某个任务的日志打印出来

3、spark-submit提交脚本:

bin/spark-submit \
        --class $class_path \
        --master yarn \
        --deploy-mode  cluster \
        --name "$job_name" \
        --executor-memory 4g \
        --driver-memory  3g \
        --num-executors 50 \
        --executor-cores 4 \
        --queue $queue \
        --conf spark.default.parallelism= 600 \
        --conf spark.yarn.executor.memoryOverhead=4G \
        --conf "spark.port.maxRetries=50" \
        --conf "spark.driver.maxResultSize=$maxResultSize" \
        --conf spark.executor.extraJavaOptions="-Dregion.name=TJ01 -Denv.name=prod" \
        --driver-java-options "-Dregion.name=TJ01 -Denv.name=prod" \
        $jar_file $job_param

或者

/data/lan/3.1.4.0-315/spark3/spark-3.2.2-bin-hadoop3.2/bin/spark-submit \
    --master yarn \
    --deploy-mode cluster \
    --conf spark.executor.memory=5g \
    --conf spark.driver.memory=4g   \
    --conf spark.executor.cores=2   \
    --conf spark.app.name=mars_schedule_217106_202311221540 \
    --conf spark.port.maxRetries=50 \
   --conf spark.executor.instances=50  \
   --conf spark.yarn.executor.memoryOverhead=4G \
   --conf spark.executor.extraJavaOptions="-Dregion.name=TJ0100 -Denv.name=prod" \
       --conf spark.driver.extraJavaOptions="-Dlog4j2.formatMsgNoLookups=true" \
  --queue root.P3.vc \
  --class com.main.Nemesis \
 /data/vc/xxxxx-2.0.0-SNAPSHOT-jar-with-dependencies.jar   hit_black_ua_rule
 
  1. spark.executor.instances=50 # executor的个数,一般50~100
  2. spark.executor.cores=4 #每个executor的核数,一般2~4
  3. spark.executor.memory=10g # 每个executor分配的内存数
  4. spark.driver.memory=5g # 一般是2-3g
  5. spark.main.class=xxx # main函数所在的类
  6. spark.default.parallelism=600 # 默认rdd的并行度,一般是spark.executor.cores*spark.executor.memory的2~3倍左右
  7. spark.yarn.executor.memoryOverhead=4G # executor执行的时候,用的内存可能会超过executor-memoy,所以会为executor额外预留一部分内存。spark.yarn.executor.memoryOverhead代表了这部分内存。

问题:

  1. 如果spark.executor.cores和spark.executor.instances都设置了,spark.default.parallelism还需要设置吗?
    需要,因为spark.executor.cores和spark.executor.instances只是设置了可用的资源,如果你不设置parallelism,默认的task也就几十个,就白白浪费了你申请的资源;
    也就是说你申请到了1w块钱,但是你不说你花多少,系统默认你花的很少,剩余的钱就浪费了,你应该是全部花光甚至超额花光,这样才是最划算
  2. spark.yarn.executor.memoryOverhead 是必要的吗?
    必要,防止内存溢出的风险;
    这个参数如果没有设置,默认会有一个自动计算公式max(X*0.1,384) X是executorMemory
  3. 一般说的并行度指的是?
    对于spark,并行度就是数据的并行度
    对于flink,并行度就是slot,就是最大算子的并行度
  4. spark的运行单元是task, 资源分配单元是executor
  5. task的数量是跟rdd的分区数是相关的,是跟并行度是一致的
  6. application并行度是executor总核数spark.executor.cores*spark.executor.memory的2~3倍,一般说的并行度就是数据的并行度
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值