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 程序在第一次启动的时候需要等待太长时间,至少 ...
随机推荐
- Linux 下的 sleep
最近在阅读 libev 的源码,看到 libev 的代码里面的 sleep 实现, 我觉得可以把这个 sleep 实现单独拿出来,作为参考,以后可以直接拿来用. 代码如下(稍有修改): void ev ...
- Effective Java 第三版——74. 文档化每个方法抛出的所有异常
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- git ssh 22 端口不可用时通过https 443 端口配置git ssh
Using SSH over the HTTPS port Sometimes, firewalls refuse to allow SSH connections entirely. If usin ...
- Web API中如何获取相对地址的绝对地址 Server.MapPath
var sPath = System.Web.Hosting.HostingEnvironment.MapPath("/FilePath/");
- mysql 按照月份自动创建表,以年和月为表明,动态生成。
需求:mysql5.5 数据库,想要根据月份自动创建表,每个月创建一张表,需要数据库自动创建,并根据当前年和月动态生成表名称. 解决办法:1 连接数据库工具为Navicat 2 首先创建存储过程, ...
- 物联网系统与CoAP之Hello,World
物联网系统与CoAP Hello,World 关于CoAP与物联网系统我们在上一篇中(ps:CoAP与物联网系统)中做一个简单的介绍,接着我们便開始试试CoAP协议的应用 CoAP应用 開始之前我们须 ...
- Android中使用BufferedReader.readline阻塞读取不到数据,但是ready返回true
通过socket测试工具在电脑上发送消息,Android真机可以收到响应BufferedReader.ready()返回true,但是readline却一直阻塞. 原因:readline()只有在遇到 ...
- UEditor在asp.netMVC4中的使用,包括上传功能,粘贴表格不显示边框问题
网页编程中在线编辑器的使用还是很重要的,最近研究了一下百度出的UEditor编辑器,把它结合到刚学的asp.netMVC+EF中,同时实现上传资料(包括图片,视频等)功能,下面就以一个最简单的新闻管理 ...
- PHP 通过构造器进行依赖注入 demo
class A{ public $b; public $f; function __construct( B $b , $f = 1 ){ $this->b = $b; $this->f ...
- JAVA用QRCode生成二维码
QRCode jar下载地址: 生成:http://www.swetake.com/qrcode/index-e.html 读取:https://zh.osdn.net/projects/qrcode ...