【Spark内存模型】 Spark在一个executor中的内存分为3块:storage内存、execution内存、other内存。 1. storage内存:存储broadcast,cache,persist数据的地方。 2. execution内存:执行内存,join、aggregate、ma ...
分类:
其他好文 时间:
2019-03-18 01:15:47
阅读次数:
156
因业务上的需要,无可避免的一些运算一定要使用shuffle操作,无法用map类的算子来替代,那么尽量使用可以map侧预聚合的算子。 map侧预聚合,是指在每个节点本地对相同的key进行一次聚合操作,类似于MapReduce中的本地combine。map-side预聚合之后,每个节点本地就只会有一条相 ...
分类:
其他好文 时间:
2019-03-12 09:12:48
阅读次数:
303
(1)避免重复的RDD案例:valrdd1=sc.textFile("hdfs://zzy/hello.txt")rdd1.map(...)valrdd2=sc.textFile("hdfs://zzy/hello.txt")rdd2.reduce(...)这里条用了两次textFile,并且读取的是同一个文件,造成了多次的磁盘读取,如果是hi同一个文件,读取一次即可。(2)尽可能多的复用一个RD
分类:
其他好文 时间:
2019-01-04 12:34:43
阅读次数:
148
(1)数据倾斜的介绍 1)数据分区的策略: -随机分区:每一个数据分配的任意一个分区的概率是均等的 -Hash分区:使用数据的Hash分区值,%分区数。(导致数据倾斜的原因) -范围分区:将数据范围划分,数据分配到不同的范围中(分布式的全局
分类:
其他好文 时间:
2019-01-04 12:26:40
阅读次数:
199
1.序列化 对象在进行网络传输或进行持久化时需要进行序列化,如果采用序列化慢或者消耗大量字节的序列化格式,则会拖慢计算。 spark 提供了两种序列化类库 1). Java serialization 灵活,但是很慢 2) Kryo serialization 比java 快10倍,紧凑,不支持所有 ...
分类:
其他好文 时间:
2018-11-29 01:20:00
阅读次数:
187
由于大部分Spark计算都是在内存中完成的,所以Spark程序的瓶颈可能由集群中任意一种资源导致,如:CPU、网络带宽、或者内存等。最常见的情况是,数据能装进内存,而瓶颈是网络带宽;当然,有时候我们也需要做一些优化调整来减少内存占用,例如将RDD以序列化格式保存。 本文将主要涵盖两个主题:1.数据序 ...
分类:
其他好文 时间:
2018-11-03 00:04:50
阅读次数:
174
1.诊断内存的消耗 在Spark应用程序中,内存都消耗在哪了? 1.每个Java对象都有一个包含该对象元数据的对象头,其大小是16个Byte。由于在写代码时候,可能会出现这种情况:对象头比对象本身占有的字节数更多,比如对象只有一个int的域。一般这样设计是不合理的,造成对象的“浪费”,在实际开发中应 ...
分类:
其他好文 时间:
2018-06-14 22:49:29
阅读次数:
208
原理介绍: 并行度:其实就是指的是,spark作业中,各个stage的task数量,也代表了spark作业做得各个阶段的stage的并行度 设置参数: spark.default.parallelism 官网推荐 此参数设置成cpu core数量的2~3倍,比如150个cpu core,分配了150 ...
分类:
其他好文 时间:
2018-05-14 13:16:43
阅读次数:
174
一、前述 Spark中调优大致分为以下几种 ,代码调优,数据本地化,内存调优,SparkShuffle调优,调节Executor的堆外内存。 二、具体 1、代码调优 1、避免创建重复的RDD,尽量使用同一个RDD 2、对多次使用的RDD进行持久化 如何选择一种最合适的持久化策略? 默认情况下,性能最 ...
分类:
其他好文 时间:
2018-03-01 23:38:47
阅读次数:
199
版权声明:本文为博主原创文章,转载请注明出处。 Spark调优秘诀 1.诊断内存的消耗 在Spark应用程序中,内存都消耗在哪了? 1.每个Java对象都有一个包含该对象元数据的对象头,其大小是16个Byte。由于在写代码时候,可能会出现这种情况:对象头比对象本身占有的字节数更多,比如对象只有一个i ...
分类:
其他好文 时间:
2018-01-21 01:13:10
阅读次数:
6082