Spark on Yarn简介

本文介绍了Spark的基本配额和关键参数,如shuffle内存配比、缓存内存配比等,并探讨了如何通过调整这些参数来优化Spark任务的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark基本配额介绍:

      每个executor (2cpu,10G)

常用参数介绍:

spark.shuffle.memoryFraction 0.5

默认是0.5,是指在shuffle阶段用于shuffle的内存配比

线上配置是0.7

        

spark.storage.memoryFraction 0.5

默认是0.5,用于指定在运算中常驻缓存的内存配比

线上配置是0.3

(一般的Hive任务无需提高这个值,甚至可以降低,但是如果是ML或者频繁迭代的任务提高这个值可以加快运算。而且

如果你在作业运行之前设置了set mapred.min.split.size=512000000;或者更大,你应该酌情提高这个参数)

关于set mapred.min.split.size这个参数:

           在Spark里面,这个参数同样用于限制map输入的文件大小,集群默认的块大小是128M,因此Spark作业默认的输入大小也是128M,即128M对应一个Task.

           以一个260G的任务为例,默认调度2200个Task作业。如果将这个值设为51200000,那么Task会变成1200。

           这样做的好处是减少不必要的Task调度,同时更加贴近内存规划。建议25600000或者更高,随作业而定。

           当然这个值过于高了也不一定就会有益处,比如:

          设为25600000时:

 

          设为512000000时:

可以看出在提高到512000000时速度并没有太大的提升,只快了6s。

但是 在128000000到512000000时还是有一定的提升的:

         设为128M时:

         设为256M时:

可见提高了36s.

 

控制你的num-executors:
spark-sql --master yarn-client --num-executors 20

运行20个executor的时候:

运行55个executor的时候:

虽然executor多了一倍,但是效率并没有快一倍,所以并不以executor越多,作业就越快。

 

参数:spark.sql.shuffle.partitions=200

设置reduce的数量,用于reduce阶段均分数据,group by类似的场景适用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值