Spark性能调优
Spark性能调优
威少SOS
改变从这里开始
展开
-
Spark优化之数据结构
目录一:需要优化什么数据结构二:Spark中常见优化算子函数三:优化实例1、优先使用数组以及字符串,而不是集合类2、避免使用多层嵌套的对象结构3、尽量使用基本数据类型替代包装类型(String,Integer)一:需要优化什么数据结构语法特性的额外内存开销:包括基于指针的Java数据结构,包装类型二:Spark中常见优化算子函数(1)内部使用到的局部数...原创 2019-05-30 18:54:42 · 273 阅读 · 0 评论 -
Spark调优之reduceByKey、groupByKey比较
目录一:功能描述二:事例分析三:原因分析四:图例比较五:源码例证六:结论一:功能描述reduceByKey:对每个key对应的value进行reduce操作gropuByKey:根据key进行分组,每个key对应一个Iterable<value>二:事例分析wordCount.scala 中的单个词汇记数操作:val count...原创 2019-06-03 21:55:48 · 1022 阅读 · 0 评论 -
Spark优化之广播共享数据
目录一:广播变量(Broadcast Variable)二:例子三:广播的变量是存放在哪?一:广播变量(Broadcast Variable)只读属性,每个节点拷贝好处:节省了内存的消耗,节省流量的消耗(每个节点上可能有 100 个 Task)二:例子广播前:val myConf = new MyConfiguration();//配置文件很大,100M...原创 2019-06-02 23:17:14 · 230 阅读 · 0 评论 -
高性能序列化类库
目录一:序列化(1)作用(2)问题(3)优化方向二:Spark中的序列化(1)序列化情景(2)Java序列化(3)Kryo序列化(4)优化Kryo类库的使用(5)Kryo的使用场景一:序列化(1)作用序列化之后到内存,磁盘,进行传输(2)问题序列化前后分别是什么样的形态进行存在?(流化动作)序列化:把对象转换为字节序列的过程...原创 2019-05-29 21:00:54 · 463 阅读 · 0 评论 -
Spark之提高并行度
目录一:并行度指什么?二:设置并行度方法(1)自动设置(2)手动设置三:意义一:并行度指什么?在一个算子计算过程中,其RDD同时被几个cpu core(Executor中)运行,数量及是其并行度数量二:设置并行度方法(1)自动设置1>以文件作为输入源的RDD的并行度例子:HDFS,就会给每一个block创建一个partition,多少个...原创 2019-06-02 01:27:42 · 1360 阅读 · 0 评论 -
Spark性能优化概览
影响因素:由于Spark的计算本质是基于内存的,所以Spark性能程序的性能可能因为集群中的任何因素出现瓶颈:CPU、网络带宽、或者是内存主要手段:1、使用高性能序列化类库2、优化数据结构3、对多次使用的RDD进行持久化 / Checkpoint4、使用序列化的持久化级别5、Java虚拟机垃圾回收调优6、提高并行度7、广播共享数据8、数据本地化9、reduceByKey和g...原创 2019-05-28 02:17:21 · 177 阅读 · 0 评论 -
诊断内存消耗
1.内存花费在哪?(1)java对象头(指针) 会占用16个字节(2)java的String对象,要多出40个字节 因为 它内部使用char数组来保存内部的字符序列,还需要保存诸如数组长度之类的信息。比如在utf-8编码时,10个字符的String,会占用60个字节 (3)HashMap,LinkedList 内部使用的是链表数据结构链表中的每一个数据,都...原创 2019-05-29 00:10:13 · 161 阅读 · 0 评论 -
Spark调优之数据本地化
目录一:宏观调优方式二:数据本地化级别三:调优参数四:代码展示五:机架 与 服务器六:TaskScheduler源码地址七:BlockManager 取数据的方式一:宏观调优方式1.移动代码到数据节点(Spark)2.移动数据到代码节点通常来说,移动代码到其他节点,会比移动数据到代码所在的节点上去,速度要快得多,因为代码比较小二:数据本地化级别...原创 2019-06-05 22:07:14 · 257 阅读 · 0 评论 -
Spark性能优化之JVM垃圾回收调优
目录一:调优的背景二:动作:(追踪+清理)三:特点四:监测垃圾回收五:优化方式1.代码层面2.优化executor内存比例3.JVM的空间分配六:补充知识点一:调优的背景Java虚拟机会定期进行垃圾回收,或内存不够时主动触发,GC本身是一条线程,亦需要耗费内存我们把Task运行的线程叫做工作线程,当GC运行时,会让工作线程直接停下来,让GC线程...原创 2019-06-05 22:03:16 · 1039 阅读 · 0 评论 -
Spark优化之序列化与持久化RDD
目录一:持久化含义二:持久化(缓存)常见操作三:序列化的持久化级别四:序列化方式五:如何存储级别一:持久化含义(个人)使一个数据(起始,中间,结构)能够在一段时间内,被反复调用(书上定义)即把数据(如内存中的对象)保存到可永久(长时间)保存的存储设备中(如磁盘)二:持久化(缓存)常见操作内存磁盘hdfs数据库三:序列化的持久化级别(...原创 2019-05-31 16:42:46 · 850 阅读 · 0 评论 -
RDD的持久化和checkpoint
一:做法对多次使用的RDD进行持久化或checkpoint二:例子(图)三:算计获取RDD原理1.RDD数据在执行完了,很有可能被立即被丢弃(因为spark一般作用于大数据情景,内存,磁盘等开销很紧张,往往会被其它任务给冲掉)2当再次调用RDD时,会首先到BlockManager中取出其持久化的数据3.如果依然丢失,会尝试读取器checkpoint的数据4.如果继续丢失,...原创 2019-05-31 11:39:07 · 272 阅读 · 0 评论 -
Spark调优之Shuffle调优
目录1.shuffle的consolidateFiles2.spark.reducer.maxSizeInFlight3.spark.shuffle.file.buffer4.spark.shuffle.io.maxRetries:拉取失败的最大重试次数,默认3次 spark.shuffle.io.retryWait:拉取失败的重试间隔,默认5s5.spark...原创 2019-06-04 22:59:10 · 509 阅读 · 0 评论