1、使用高性能序列化类库
2、优化数据结构
3、对多次使用的RDD进行持久化/CheckPoint
4、使用序列化的持久化级别
5、Java虚拟机垃圾回收调优
降低RDD缓存占用空间的比例:new SparkConf().set("spark.storage.memoryFraction","0.5"),从而提高task使用的内存比例。
6、提高并行度
new SparkConf().set("spark.default.parallelism","5")这个参数一旦设定,每个RDD的数据,都会被拆分为5份,针对RDD的partition,一个partition会自动的来进行计算,所以对于所的算子操作,都会创建5个task在集群中运行。
spark官方推荐,设置集群总cpu的数量的两到三倍的并行度,每个cpu core可能分配到并发运行2-3个task线程,这样集群的状态就不太可能出现空闲的状态。
小知识:spark会自动设置以文件作为输入源的RDD的并行度,依据其大小,比如:HDFS,就会给每个block创建一个partition,也依据这个设置并行度,对于reduceByKey等会发生shuffle的操作,就使用并行度最大的父RDD的并行度即可。

7、广播共享数据
默认情况下,算子函数使用到的外部数据,会被拷贝到时每个task中。如果共享的数据较大,那么每个task都会把这个较大的数据拷贝至自己的节点上。

8、数据本地化
数据本地化对spark job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的,那么性能会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其他节点,会比移动数据到代码所在的节点上去速度要快很多。因为代码比较小,spark也正是基于这个数据本地化的原则来构建task调度算法的。
本地化,指的是,数据离计算它的代码有多近,基于数据距离代码的距离,有几种数据本地化级别:
1)PROCESS_LOCAL:数据和计算它的代码在同一个jvm进程中。
2)NODE_LOCA:数据和计算它的代码在一个节点上,但是不在一个进程中,比如在不同的executor进程中,或者是数据在HDFS文件的block中。
3)NO_PREF:数据从哪里过来,性能都是一样的。
4)RACK_LOCAL:数据和计算它的代码在一个机架上。
5)ANY:数据可能在任意地方,比如其他网络环境内,或是在其他机架上。
spark处理partition数据时,首先会尽量的使用最好的本地化的级别去启动task,若启动的节点一直处于忙碌状态,spark会待一会,如果executor有空闲资源了,便会启动task。若等待一会(时间可以通过参数设置),发现没有executor的core释放,那么会放大一个级别去启动这个Task。
可以设置参数,spark.locality系列参数,来调节spark等待task可以进行数据 本地化的时间。spark.locality.wait(3000ms)、spark.locality.wait.node、spark.locality.wait.process、spark.locality.wait.rack

9、reduceByKey和groupByKey的合理使用
如果能使用reduceByKey就使用reduceByKey,因为它会在map端先进行本地combine,可以大大减少传输reduce端的数据量,减少网络传输的开销。只有在ReduceByKey处理不了的时候,才会用groupByKey().map()来替代。

10、shuffle调优(重中之重)
spark.shuffle.con.solidateFiles:是否开启shuffle block file的合并,默认是false
spark.reducer.maxSizeInFlight:reduce task的摘取缓存,默认是48m
spark.shuffle.file.buffer:map task的写磁盘缓存,默认32K
spark.shuffle.io.maxRetries:拉取失败的最大重试次数,默认是3次
spark.shuffle.io.retryWait:拉取失败的重试间隔,默认5s
spark.shuffle.memoryFraction:用于reduce端聚合的内存比例,默认为0.2,超过比例就会溢出到磁盘上。

spark性能调优点(逐步完善)的更多相关文章

  1. [Spark性能调优] 第一章:性能调优的本质、Spark资源使用原理和调优要点分析

    本課主題 大数据性能调优的本质 Spark 性能调优要点分析 Spark 资源使用原理流程 Spark 资源调优最佳实战 Spark 更高性能的算子 引言 我们谈大数据性能调优,到底在谈什么,它的本质 ...

  2. spark 性能调优(一) 性能调优的本质、spark资源使用原理、调优要点分析

    转载:http://www.cnblogs.com/jcchoiling/p/6440709.html 一.大数据性能调优的本质 编程的时候发现一个惊人的规律,软件是不存在的!所有编程高手级别的人无论 ...

  3. Spark性能调优:广播大变量broadcast

    Spark性能调优:广播大变量broadcast 原文链接:https://blog.csdn.net/leen0304/article/details/78720838 概要 有时在开发过程中,会遇 ...

  4. Spark性能调优之代码方面的优化

    Spark性能调优之代码方面的优化 1.避免创建重复的RDD     对性能没有问题,但会造成代码混乱   2.尽可能复用同一个RDD,减少产生RDD的个数   3.对多次使用的RDD进行持久化(ca ...

  5. Spark性能调优之合理设置并行度

    Spark性能调优之合理设置并行度 1.Spark的并行度指的是什么?     spark作业中,各个stage的task的数量,也就代表了spark作业在各个阶段stage的并行度!     当分配 ...

  6. Spark性能调优之资源分配

    Spark性能调优之资源分配    性能优化王道就是给更多资源!机器更多了,CPU更多了,内存更多了,性能和速度上的提升,是显而易见的.基本上,在一定范围之内,增加资源与性能的提升,是成正比的:写完了 ...

  7. Spark性能调优之Shuffle调优

    Spark性能调优之Shuffle调优    • Spark底层shuffle的传输方式是使用netty传输,netty在进行网络传输的过程会申请堆外内存(netty是零拷贝),所以使用了堆外内存. ...

  8. Spark性能调优之解决数据倾斜

    Spark性能调优之解决数据倾斜 数据倾斜七种解决方案 shuffle的过程最容易引起数据倾斜 1.使用Hive ETL预处理数据    • 方案适用场景:如果导致数据倾斜的是Hive表.如果该Hiv ...

  9. Spark性能调优之JVM调优

    Spark性能调优之JVM调优 通过一张图让你明白以下四个问题                1.JVM GC机制,堆内存的组成                2.Spark的调优为什么会和JVM的调 ...

随机推荐

  1. April.Util更新之权限

    目录 前言 权限 中间层 小结 前言 在之前已经提到过,公用类库Util已经开源,目的一是为了简化开发的工作量,毕竟有些常规的功能类库重复率还是挺高的,二是为了一起探讨学习软件开发,用的人越多问题也就 ...

  2. 【github】git常用命令和node项目

    这是之前在本地搞的一个小东西.因为之前电脑经常会很卡.后来发现任务管理器中多了两个不知名的进程:chromgpu.exe和flrefox.exe 乍一看以为和chrome和firefox两个浏览器有关 ...

  3. navicat 系列软件一点击菜单栏就闪退

    现象:安装多个版本都出现了闪退的现象 解决方案:后来发现,原来是启动了有道词典屏幕取词才会出现这种现象,关了有道就没事.

  4. Egret入门学习日记 --- 第二篇 (书籍的选择 && 书籍目录 && 书中 3.3 节 内容)

    第二篇 (书籍的选择 && 书籍目录 && 书中 3.3 节 内容) 既然选好了Egret,那我就要想想怎么学了. 开始第一步,先加个Q群先,这不,拿到了一本<E ...

  5. CentOS7中SSH免密登陆设置

    一.准备三台客户机 hadoop100 192.168.13.100(Master) hadoop101 192.168.13.101 hadoop102 192.168.13.102 二.在hado ...

  6. mysql应用之通过存储过程方式批量插入数据

    我们平时的测试过程中有一个环节就是准备测试数据,包括准备基础数据,准备业务数据,使用的场景包括压力测试,后台批量数据传输,前端大数据查询导出,或者分页打印等功能,准备测试数据我们通俗点讲就是造数据,根 ...

  7. Linux环境下Oracle安装参数设置

    前面讲了虚拟机的设置和OracleLinux的安装,接下来我们来说下Oracle安装前的准备工作.1.系统信息查看系统信息查看首先服务器ip:192.168.8.120服务器系统:Oracle Lin ...

  8. WordPress 在Ubuntu下安装插件、主题输入FTP后无法创建目录

    最近自己在搞基于lnmp+wordpress的个人博客, 一切都就绪后,想改变下自己的主题,然后去Wordpress里面内置的主题安装下载的时候,提示:无法创建目录! 一般我们在Ubuntu系统上面安 ...

  9. python生成饼图解决中文乱码

    解决乱码问题 乱码的原因 字体的不匹配 解决的方法 加上引用中文字体就好了 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] 代码 def sta ...

  10. Spring Cloud 入门概括介绍

    出处: 拜托!面试请不要再问我Spring Cloud底层原理 概述 毫无疑问,Spring Cloud是目前微服务架构领域的翘楚,无数的书籍博客都在讲解这个技术.不过大多数讲解还停留在对Spring ...