**性能优化王道就是给更多资源!**机器更多了,CPU更多了,内存更多了,性能和速度上的提升,是显而易见的。基本上,在一定范围之内,增加资源与性能的提升,是成正比的;写完了一个复杂的spark作业之后,

进行性能调优的时候,首先第一步,我觉得,就是要来调节最优的资源配置;在这个基础之上,

如果说你的spark作业,能够分配的资源达到了你的能力范围的顶端之后,无法再分配更多的资源了,

公司资源有限;那么才是考虑去做后面的这些性能调优的点。

**大体上这两个方面:**core mem

问题:

1、分配哪些资源?

2、在哪里分配这些资源?

3、为什么多分配了这些资源以后,性能会得到提升?

答案:

1、分配哪些资源?

executor、core per executor、memory per executor、driver memory

2、在哪里分配这些资源?

在我们在生产环境中,提交spark作业时,用的spark-submit shell脚本,里面调整对应的参数

/usr/local/spark/bin/spark-submit \

–class cn.spark.sparktest.core.WordCountCluster \

–num-executors 3 \ 配置executor的数量

–executor-memory 100m \ 配置每个executor的内存大小

–executor-cores 3 \ 配置每个executor的cpu core数量

–driver-memory 100m \ 配置driver的内存(影响很大)

/usr/local/SparkTest-0.0.1-SNAPSHOT-jar-with-dependencies.jar \

3、调节到多大,算是最大呢?

第一种,Spark Standalone,公司集群上,搭建了一套Spark集群,你心里应该清楚每台机器还能够

给你使用的,大概有多少内存,多少cpu core;那么,设置的时候,就根据这个实际的情况,

去调节每个spark作业的资源分配。比如说你的每台机器能够给你使用4G内存,2个cpu core;

20台机器;executor,20;平均每个executor:4G内存,2个cpu core。

第二种,Yarn。资源队列。资源调度。应该去查看,你的spark作业,要提交到的资源队列,

hadoop spark storm 每一个队列都有各自的资源(cpu mem)

**大概有多少资源?**500G内存,100个cpu core;executor,50;平均每个executor:10G内存,2个cpu core。

Spark-submit的时候怎么指定资源队列? --conf spark.yarn.queue default

设置队列名称:spark.yarn.queue default

一个原则,你能使用的资源有多大,就尽量去调节到最大的大小(executor的数量,几十个到上百个不等;

executor内存;executor cpu core)

4、为什么调节了资源以后,性能可以提升?

增加executor:

如果executor数量比较少,那么,能够并行执行的task数量就比较少,就意味着,我们的Application的并行执行的能力就很弱。

比如有3个executor,每个executor有2个cpu core,那么同时能够并行执行的task,就是6个。6个执行完以后,再换下一批6个task。增加了executor数量以后,那么,就意味着,能够并行执行的task数量,也就变多了。比如原先是6个,现在可能可以并行执行10个,甚至20个,100个。那么并行能力就比之前提升了数倍,数十倍。相应的,性能(执行的速度),也能提升数倍~数十倍。

增加每个executor的cpu core:

也是增加了执行的并行能力。原本20个executor,每个才2个cpu core。能够并行执行的task数量,

就是40个task。现在每个executor的cpu core,增加到了5个。能够并行执行的task数量,就是100个task。执行的速度,提升了2倍左右。

增加每个executor的内存量:

增加了内存量以后,对性能的提升,有三点:

1、如果需要对RDD进行cache,那么更多的内存,就可以缓存更多的数据,将更少的数据写入磁盘

甚至不写入磁盘。减少了磁盘IO

2、对于shuffle操作,reduce端,会需要内存来存放拉取的数据并进行聚合。**如果内存不够,**也会写入磁盘。如果给executor分配更多内存以后,就有更少的数据,需要写入磁盘,甚至不需要写入磁盘。减少了磁盘IO,提升了性能。

3、对于task的执行可能会创建很多对象。如果内存比较小,可能会频繁导致JVM堆内存满了,

然后频繁GC,垃圾回收,minor GC和full GC。(速度很慢)。内存加大以后,带来更少的GC,垃圾回收,

避免了速度变慢,性能提升

参考链接: Spark性能调优之资源分配

Spark性能调优之资源分配相关推荐

  1. Spark性能调优-RDD算子调优篇

    Spark性能调优-RDD算子调优篇 RDD算子调优 1. RDD复用 在对RDD进行算子时,要避免相同的算子和计算逻辑之下对RDD进行重复的计算,如下图所示: 对上图中的RDD计算架构进行修改,得到 ...

  2. spark学习-Spark性能调优(1)

    本文要解决的问题: Spark在使用过程中不可避免的需要进行一系列的性能优化,本文就Spark性能调优的基础部分进行总结和归纳(开发调优和资源调优),参考了不少前辈的文章,在此非常感谢. 目的 在大数 ...

  3. 大数据培训:Spark性能调优与参数配置

    Spark性能调优-基础篇 众所周知,正确的参数配置对提升Spark的使用效率具有极大助力,帮助相关数据开发.分析人员更高效地使用Spark进行离线批处理和SQL报表分析等作业. 推荐参数配置模板如下 ...

  4. Spark商业案例与性能调优实战100课》第20课:大数据性能调优的本质和Spark性能调优要点分析

    Spark商业案例与性能调优实战100课>第20课:大数据性能调优的本质和Spark性能调优要点分析 基于本元想办法,大智若愚,大巧若拙!深入彻底的学习spark技术内核!

  5. Spark性能调优 之 合理规划资源配置

    文章目录 1. 合理规划资源配置 1.1 简介 1.1.1 资源配置调优原理 1.2 资源配置说明 1.2.1 资源配置种类 1.2.2 资源配置方式 1.2.3 调优原则 2. 调节并行度 2.1 ...

  6. Spark性能调优总结

    文章授权自 : http://www.6aiq.com/article/1547041120082 使用正确的 transformations操作 虽然开发者达到某一目标,可以通过不同的transfo ...

  7. Sparkamp;Spark性能调优实战

    Spark特别适用于多次操作特定的数据,分mem-only和mem & disk.当中mem-only:效率高,但占用大量的内存,成本非常高;mem & disk:内存用完后,会自己主 ...

  8. 大数据培训:Spark 性能调优详解

    调优概述 有的时候,我们可能会遇到大数据计算中一个最棘手的问题--数据倾斜,此时Spark作业的性能会比期望差很多.数据倾斜调优,就是使用各种技术方案解决不同类型的数据倾斜问题,以保证Spark作业的 ...

  9. Spark性能调优系列:Spark参数配置大全(官网资料)

    Spark参数配置大全 Spark提供了三个位置来配置系统 Spark属性控制大多数应用程序参数,可以使用SparkConf对象或Java系统属性来设置. 通过conf/spark-env.sh每个节 ...

最新文章

  1. 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册
  2. 数据之路 Day8 Matplotlib包
  3. Python常用技巧了解一下?
  4. delphi 中配置文件的使用(*.ini)
  5. silverlight之datagrid的一个问题
  6. 知识图谱入门视频(二)
  7. [转载] python可视化分析(matplotlib、seaborn、ggplot2)
  8. OpenStack Queens 女王新神器 — 卷多重挂载
  9. HTTP 权威指南 详解 (推荐阅读 )
  10. ora257 linux,ORA-00257解决
  11. word使用过程中遇到的问题记录(二):如何画柱状图和折线图的组合图?
  12. 智能生活 App SDK 开发入门教程【内附代码段 】
  13. python的用途和组成_Python 用法总结
  14. 求二元函数最大值matlab,利用matlab, 二元函数求最大值
  15. 5G未能拯救国内手机市场,手机出货量持续下滑
  16. 纯苹果汁的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 【商业分析 03】疫情之下(20年初IT桔子投融资数据分析)
  18. myBase Desktop 6.x 用户手册
  19. 一个电视剧男孩计算机专业的,杨紫新剧化身计算机天才,男主颜值爆表,又是一部爆款剧!...
  20. OpenCV 获取变换矩阵

热门文章

  1. PyQt5 笔记6 -- 对话框(QDialog)
  2. 直播预告 | 第四范式2021发布会技术分论坛报名开启,6月23日线上见
  3. 程序员法律考试(7)-民法(4)
  4. vb.net 机器学习-候选消除法
  5. python3精要(54)-文件读写与异常处理
  6. 【Python】一文搞懂Pandas数据排序
  7. 【数据分析】年纪轻轻却突然猝死?数据分析告诉你“猝死”离我们到底有多近?...
  8. 本周日,王海峰、朱军、李宏毅等大咖邀你加入这场AI开发者盛宴
  9. 【数据竞赛】Kaggle竞赛宝典国内外竞赛方案汇总
  10. 【CV】图像分割2020,架构,损失函数,数据集,框架的整理和总结