Spark优化
技术蚂蚁
这个作者很懒,什么都没留下…
展开
-
Spark性能优化第九季之Spark Tungsten内存使用彻底解密
一:Tungsten中到底什么是Page? 1.在Spark其实不存在Page这个类的。Page是一种数据结构(类似于Stack,List等),从OS层面上讲,Page代表了一个内存块,在Page里面可以存放数据,在OS中会存放很多不同的Page,当要获得数据的时候首先要定位具体是哪个Page中的数据,找到该Page之后从Page中根据特定的规则(例如说数据的offset和length)取出数转载 2016-08-31 21:45:05 · 488 阅读 · 0 评论 -
Spark性能优化第十季之全球独家揭秘Spark统一内存管理
一:Memory Manager 在Spark 1.6 版本中,memoryManager 的选择是由spark.memory.useLegacyMode=false决定的。如果采用1.6之前的模型,这会使用StaticMemoryManager来管理,否则使用新的UnifiedMemoryManager,我们先看看1.6之前,对于一个Executor,内存都有哪些部分构成: 1,Execut转载 2016-08-31 21:41:48 · 407 阅读 · 0 评论 -
Spark性能优化第八季之Spark Tungsten-sort Based Shuffle
一:使用Tungsten功能 1, 如果想让您的程序使用Tungsten的功能,可以配置: Spark.Shuffle.Manager = tungsten-sort Spark在钨丝计划下要管理两种类型的内存存储方式:堆内和堆外。为了管理他们,所以搞了一个Page。 堆外:指针直接指向数据本身。 堆内:指针首先指向Object,然后通过偏移量OffSet再具体定位到转载 2016-08-31 21:49:58 · 954 阅读 · 0 评论 -
Spark性能优化第一季
一:Spark性能优化核心基石 1, Spark是采用Master-Slaves的模式进行资源管理和任务执行的管理: a) 资源管理:Master-Workers,在一台机器上可以有多个Workers; b) 任务执行:Driver-Executors,当在一台机器上分配多个Workers的时候那么默认情况下每个Worker都会为当前运行的应用程序分配一个Executor,但是我们可以修改配转载 2016-08-31 21:53:14 · 374 阅读 · 0 评论 -
Spark性能优化第二季
一:Task性能优化 1,慢任务(数据倾斜或机器故障)的性能优化:可以考虑减少每个partition处理的数据量,同时建议开启spark.speculation; 2,尽量减少Shuffle,例如我们要减少groupByKey的操作,因为groupByKey会要求通过网络拷贝(Shuffle)所有的数据,有限考虑使用reduceByKey,因为会首先reduce locally;再例如在进行j转载 2016-08-31 21:55:13 · 294 阅读 · 0 评论 -
Spark性能优化第四季
一:Spark性能调优之序列化 1,之所以进行序列化,最重要的原因是内存空间有限(减少GC的压力,最大化的避免Full GC的产生,因为一旦产生Full GC则整个Task处于停止状态!!!)、减少磁盘IO的压力、减少网络IO的压力; 2,什么时候会必要的产生序列化或反序列化呢?发生磁盘IO和网络通讯的时候会序列化和反序列化,更为重要的考虑序列化和反序列化的时候有另外两种情况: A)Pers转载 2016-08-31 21:58:03 · 652 阅读 · 0 评论 -
Spark性能优化第六季
一:Shuffle性能调优 1,问题:Shuffle output file lost?真正的原因是GC导致的!!!如果GC尤其是Full GC产生通常会导致线程停止工作,这个时候下一个Stage的Task在默认情况下就会尝试重试来获取数据,一般重试3次每次重试的时间为5s,也就是说默认情况下15s内如果还是无法抓到数据的话,就会出现Shuffle output file lost等情况,进而会转载 2016-08-31 21:59:30 · 565 阅读 · 0 评论