摘要:
一、Spark 1.4.x的新特性1、Spark Core 1.1 提供REST API供外界开发者获取Spark内部的各种信息(jobs / stages / tasks / storage info),基于这些API,可以搭建自己的Spark监控系统。 1.2 shuffle阶段,默认将map端写入磁盘的数据进行序列化,优化io性能。 1.3 钨丝计划(Project Tungsten)... 阅读全文
posted @ 2019-07-29 16:30
米兰的小铁將
阅读(223)
评论(0)
推荐(0)
摘要:
一、shuffle性能优化1、没有开启consolidation机制的性能低下的原理剖析2、开启consolidation机制之后对磁盘io性能的提升的原理spark.shuffle.consolidateFiles:是否开启shuffle block file的合并,默认为false;总结,开启了consolidation机制之后,shuffle map端,写磁盘的数量,大大减少;比如节点100... 阅读全文
posted @ 2019-07-29 15:02
米兰的小铁將
阅读(282)
评论(0)
推荐(0)
摘要:
一、groupByKey1、图解val counts = pairs.groupByKey().map(wordCounts => (wordCounts._1, wordCounts._2.sum)) groupByKey的性能,相对来说,是有问题的;因为,它是不会进行本地聚合的,而是原封不动的,把ShuffleMapTask的输出,拉取到ResultTask的内存中,所以这样的话,会导致,所有... 阅读全文
posted @ 2019-07-29 14:47
米兰的小铁將
阅读(435)
评论(0)
推荐(0)
摘要:
一、数据本地化1、背景数据本地化对于Spark Job性能有着巨大的影响。如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其他节点,会比移动数据到代码所在的节点上去,速度要快得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。数据本地化,指的是,数据离计算它... 阅读全文
posted @ 2019-07-29 14:26
米兰的小铁將
阅读(875)
评论(0)
推荐(0)
摘要:
一、提高并行度1、图解实际上Spark集群的资源并不一定会被充分利用到,所以要尽量设置合理的并行度,来充分地利用集群的资源。才能充分提高Spark应用程序的性能。Spark会自动设置以文件作为输入源的RDD的并行度,依据其大小,比如HDFS,就会给每一个block创建一个partition,也依据这个设置并行度。对于reduceByKey等会发生shuffle的操作,就使用并行度最大的父RDD的并... 阅读全文
posted @ 2019-07-29 14:10
米兰的小铁將
阅读(204)
评论(0)
推荐(0)
摘要:
一、背景如果在持久化RDD的时候,持久化了大量的数据,那么Java虚拟机的垃圾回收就可能成为一个性能瓶颈。因为Java虚拟机会定期进行垃圾回收,此时就会追踪所有的java对象,并且在垃圾回收时,找到那些已经不在使用的对象,然后清理旧的对象,来给新的对象腾出内存空间。垃圾回收的性能开销,是跟内存中的对象的数量,成正比的。所以,对于垃圾回收的性能问题,首先要做的就是,使用更高效的数据结构,比如arra... 阅读全文
posted @ 2019-07-29 13:55
米兰的小铁將
阅读(263)
评论(0)
推荐(0)
摘要:
一、图解二、说明如果程序中,对某一个RDD,基于它进行了多次transformation或者action操作。那么就非常有必要对其进行持久化操作,以避免对一个RDD反复进行计算。此外,如果要保证在RDD的持久化数据可能丢失的情况下,还要保证高性能,那么可以对RDD进行Checkpoint操作。持久化,再checkpoint这样,第一次,需要重新计算RDD;第二次计算该RDD,其实会从BlockMa... 阅读全文
posted @ 2019-07-29 10:29
米兰的小铁將
阅读(373)
评论(0)
推荐(0)
摘要:
一、概述要减少内存的消耗,除了使用高效的序列化类库以外,还有一个很重要的事情,就是优化数据结构。从而避免Java语法特性中所导致的额外内存的开销,比如基于指针的Java数据结构,以及包装类型。有一个关键的问题,就是优化什么数据结构?其实主要就是优化你的算子函数,内部使用到的局部数据,或者是算子函数外部的数据。都可以进行数据结构的优化。优化之后,都会减少其对内存的消耗和占用。二、如何优化数据结构1、... 阅读全文
posted @ 2019-07-29 10:13
米兰的小铁將
阅读(560)
评论(0)
推荐(0)
摘要:
一、数据序列化概述在任何分布式系统中,序列化都是扮演着一个重要的角色的。如果使用的序列化技术,在执行序列化操作的时候很慢,或者是序列化后的数据还是很大,那么会让分布式应用程序的性能下降很多。所以,进行Spark性能优化的第一步,就是进行序列化的性能优化。Spark自身默认就会在一些地方对数据进行序列化,比如Shuffle。还有就是,如果我们的算子函数使用到了外部的数据(比如Java内置类型,或者自... 阅读全文
posted @ 2019-07-29 09:57
米兰的小铁將
阅读(279)
评论(0)
推荐(0)

浙公网安备 33010602011771号