一、Spark性能调优——最优资源配置

Spark 性能调优的第一步,就是为任务分配更多的资源, 在一定范围内,增加资源的分配与性能的提升是成正比的, 实现了最优的资源配置后, 在此基础上再考虑进行后面论述的性能调优策略。

资源的分配在使用脚本提交 Spark 任务时进行指定, 标准的 Spark 任务提交脚本:

/usr/opt/modules/spark/bin/spark-submit \
--class com.atguigu.spark.Analysis \
--num-executors 80 \
--driver-memory 6g \
--executor-memory 6g \
--executor-cores 3 \
/usr/opt/modules/spark/jar/spark.jar \

可以进行分配的资源如表

调节原则: 尽量将任务分配的资源调节到可以使用的资源的最大限度。

对于具体资源的分配,我们分别讨论 Spark 的两种 Cluster 运行模式:

第一种是 Spark Standalone 模式,你在提交任务前,一定知道或者可以从运维部门获取到你可以使用的资源情况,在编写 submit 脚本的时候,就根据可用的资源情况进行资源的分配,比如说集群有 15 台机器,每台机器为 8G 内存, 2 个 CPU core,那么就指定 15 个 Executor, 每个 Executor 分配 8G 内存, 2 个 CPU core。

第二种是 Spark Yarn 模式, 由于 Yarn 使用资源队列进行资源的分配和调度,在表写 submit 脚本的时候,就根据 Spark 作业要提交到的资源队列, 进行资源的分配,比如资源队列有 400G 内存, 100 个 CPU core,那么指定 50 个 Executor,每个 Executor分配 8G 内存, 2 个 CPU core。

名称解析
增加 Executor·个数在资源允许的情况下,增加 Executor的个数可以提高执行 task 的并行度。 比如有 4 个 Executor,每个 Executor 有 2个 CPU core,那么可以并行执行 8 个 task,如果将 Executor 的个数增加到 8 个(资源允许的情况下), 那么可以并行执行16 个 task,此时的并行能力提升了一倍。
增加每个 Executor 的 CPU core 个数在 资 源 允 许 的 情 况 下 , 增 加 每 个Executor 的 Cpu core 个数,可以提高执行task 的并行度。 比如有 4 个Executor,每个 Executor 有 2 个 CPU core,那么可以并行执行 8 个 task,如果将每个 Executor的 CPU core 个数增加到 4 个(资源允许的情况下), 那么可以并行执行 16 个 task,此时的并行能力提升了一倍。
增加每个 Executor 的内存量

在 资 源 允 许 的 情 况 下 , 增 加 每 个Executor 的内存量以后,对性能的提升有三点:
1. 可以缓存更多的数据(即对 RDD 进行 cache) ,写入磁盘的数据相应减少,

甚至可以不写入磁盘,减少了可能的磁盘 IO;
2. 可以为 shuffle 操作提供更多内存,即有更多空间来存放 reduce 端拉取的数据,写入磁盘的数据相应减少,甚至可以不写入磁盘,减少了可能的磁盘IO;
3. 可以为 task 的执行提供更多内存,在task 的 执 行 过 程 中 可 能 创 建 很 多 对象,内存较小时会引发频繁的 GC,增加内存后,可以避免频繁的 GC,提升整体性能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值