spark优化设置
-》》》配置参数优化
SparkConf sc = new SparkConf().setAppName("com.sp.test.GroupTop3").setMaster("local")
.set("spark.shuffle.consolidateFiles", "true")//优化1:开启shuffleGroup,避免shuffleMapTask创建过多的bucket文件
//优化2:设置并行度(rdd的同时partition的数量,每个partition都会被一个task执行,那么在不同节点的不同executor中同时执行的task为5)
//如果这个时候cpu core=6的话,那么资源就有一个core浪费了;
//如果cpu core为6的话,那么这个值可以设置成12 ~ 18(spark官方推荐task数量大约是core的3倍左右是比较合适的)这样可以充分的利用cpu资源,因为不知道task什么时间之行结束
.set("spark.default.parallelism", "5")
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")//优化3:使用kyro序列化机制,默认的jdk序列化占用内存空间大,并且速度慢
//.registerKryoClasses(Array(classOf[MyClass1], classOf[MyClass2]));//kyro需要设置序列化自定义类型
.set("spark.kryoserializer.buffer.mb", "10")//优化4:如果遇到非常大的java对象需要增加kryoserializer的缓存(默认为:2m,这里设置为10m)
.set("spark.storage.memoryFraction", "0.3")//优化5:jvm的内存控制,让RDD partition cache 所占用的内存数量仅仅站用20%,更多内存留给task执行时的需要
//shuffle级别的优化
.set("spark.shuffle.file.buffer", "128k")//优化6:将数据写入磁盘的缓冲区大小 (默认值:32k)
.set("spark.reducer.maxSizeInFlight", "96m")//优化7:resultTask从bucket缓冲区拉取数据的最大大小,值过小会导致多次网络通信(默认值:48m)
.set("spark.shuffle.io.maxRetries", "6")//优化9:拉取数据失败后的重试次数;默认3次
.set("spark.shuffle.io.retryWait", "10s")//优化10:拉去数据失败时的重试间隔;默认5秒
.set("spark.shuffle.memoryFraction", "0.5")//优化11:Executor内存中,分配给shuffle read task进行聚合操作的内存比例,默认是0.2
;
JavaSparkContext javaSparkContext = new JavaSparkContext(sc);
eden区域分配的大小(-Xmx)是: 单独数据块的大小(如果为hdfs压缩的文件的话,那么解压后大概为压缩的3倍,这样需要在乘以3) * task的数量 * 3/4 JavaSparkContext javaSparkContext = new JavaSparkContext(sc);
-》》》数据结构优化
在数据结构上也可以进行优化!如果你的spark应用程序对内存及其敏感,那么需要你使用更为轻量级的类型,在数据结构上进行优化,如1:Map类型使用特定格式的字符串代替,2:使用int类型代替UUID等。 -》》》持久化RDD
JavaPairRDD<String, Iterable<Integer>> rdd_group = rdd_tuple.groupByKey().cache();//直接持久化到内存
rdd_group.persist(StorageLevel.MEMORY_ONLY_SER());//虽然存在于内存,但是将其序列化,减小空间
rdd_group.persist(StorageLevel.MEMORY_AND_DISK_SER());//也可以序列化到内存和磁盘(会对数据进行分区,不适合放在内存的将要放入硬盘)
spark优化设置的更多相关文章
- 小记---------spark优化之更优分配资源
spark优化:在一定范围之内,增加资源与性能的提升是成正比的. 因此, 一个cpu core 执行一个task线程. task数: 若有 cpu core 2个.num-execu ...
- spark优化项
一.Shuffle优化项 1.Shuffle优化配置 - spark.shuffle.file.buffer 默认值:32k 参数说明:该参数用于设置shuffle write task的Buffer ...
- MyEclipse 2014各种优化设置
各种优化大整合,陆续更新使用中的问题,也欢迎大家提问. 1.通用优化设置:字体,UTF-8编码格式设置: http://jingyan.baidu.com/article/b907e627d2c5da ...
- MongoDB在Linux下常用优化设置
MongoDB在Linux下常用优化设置 以下是一些MongoDB推荐的常用优化设置.在生产环境下选取合适的参数值,例如预读值和默认文件描述符数目等,会对系统性能有很大的影响. 1.关闭数据库文件的 ...
- NUMA的取舍与优化设置【转】
NUMA的取舍与优化设置 在os层numa关闭时,打开bios层的numa会影响性能,QPS会下降15-30%; 在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性能. 安装n ...
- Win10传递优化设置技巧
什么是“传递优化缓存” “传递优化”是微软为了加快Windows更新和Microsoft Store应用更新的下载速度,而在Windows10中引入的一种“自组织分布式本地化缓存”设计,可以在用户电脑 ...
- MyEclipse优化设置(最详细版本)
MyEclipse优化设置由于自己需要,在网上查了相关资料,现在总结如下: 本优化方法较全,希望能帮助到需要的人... 第一步: 取消自动validation validation有一堆,什么xml. ...
- mySQL内存及虚拟内存优化设置[转]
mySQL内存及虚拟内存优化设置 . 数据库mySQL内存优化G-LB 为了装mysql环境测试,装上后发现启动后mysql占用了很大的虚拟内存,达8百多兆.网上搜索了一下,得到高人指点my.ini ...
- ASP.NET在IIS的启动优化设置
ASP.NET在IIS的启动优化设置 约定: IIS=Internet Information Services Manager 概要 因为ASP.NET 程序在第一次启动的时候需要等待太长时间,至少 ...
随机推荐
- MAC Gradle 下载的问题
1.项目中 gradle/wrapper/gradle-wrapper.properties 中的变量 GRADLE_USER_HOME 可以在 ~/.bash_profile 中配置, 设置为 GR ...
- elastic search query & filter & query_string
一.基本概念 1.query时,如何指定返回哪些字段 希望返回name和date字段 希望返回以location.*为前缀的字段以及date字段:不希望返回location.geolocation字段 ...
- SQL自动流水号函数
CREATE FUNCTION [dbo].[f_NextBH]() ) AS BEGIN ), ),),),) FROM Shop WITH(XLOCK,PAGLOCK)) END
- java 查看SOAP请求报文
log.info("ESB 请求URL = " + cachedEndpoint.toString());//打印SOAP请求报文 add by LinJC on 20170120 ...
- golang:常量
今天写代码的时候才发现,go语言里面的常量不能是数组(例如:[2]byte) 于是想查一下资料搞清楚到底是什么原因导致的,从effective go查到如下介绍: 但是这里也仅仅就是介绍了一下常量类型 ...
- 【Java编码规范】《阿里巴巴Java开发手册(正式版)》【转载】
2017年开春之际,诚意献上重磅大礼:阿里巴巴Java开发手册,首次公开阿里官方Java代码规范标准.这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率.大大降低代 ...
- FlexCel 插入公式和插入新行
//http://www.tmssoftware.biz/flexcel/doc/vcl/api/FlexCel.Core/TExcelFile/InsertAndCopyRange.html#tex ...
- thinkphp5 composer
前提:已安装composer 1.安装包 https://packagist.org/?query=thinkphp ,tp的各种安装包 2.安装 //安装命令, composer create-pr ...
- 自动化测试工具Katalon简单使用
前一段时间接触了下Katalon,当时只是简单用了下,今天看到Katalon给发邮件,发现都忘记了,因此重新学习并记录下来 Katalon是在Selemium相同的内核上构建起来的一个自动化测试工具 ...
- 深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -
create schema deepInMySql;use deepInMySql; -- 查看当前默认存储引擎show variables like '%table_type%'; -- 查看当前数 ...