进行节点的数据传递,或者保存数据时都会进行序列化.spark默认的是org.apache.spark.serializer.JavaSerializer.而我们要修改成org.apache.spark.serializer.KryoSerializer.…
Spark默认采用Java的序列化器,这里建议采用Kryo序列化提高性能.实测性能最高甚至提高一倍. Spark之所以不默认使用Kryo序列化,可能的原因是需要对类进行注册. Java程序中注册很简单: SparkConf conf = new SparkConf().setAppName(appName); conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer"); con…
官网:http://spark.apache.org/docs/latest/tuning.html 1.引言 提到Spark与Hadoop的区别,基本最常说的就是Spark采用基于内存的计算方式,尽管这种方式对数据处理的效率很高,但也会往往引发各种各样的问题,Spark中常见的OOM等等.效率高的特点,注定了Spark对性能的严苛要求,那Spark不同程序的性能会碰到不同的资源瓶颈,比如:CPU,带宽.内存.如果该程序性能遇到了阻碍,但不是内存问题(编码问题),通常来说便需要读者处理带宽的瓶颈…
Spark性能优化的10大问题及其解决方案 问题1:reduce task数目不合适解决方式:需根据实际情况调节默认配置,调整方式是修改参数spark.default.parallelism.通常,reduce数目设置为core数目的2到3倍.数量太大,造成很多小任务,增加启动任务的开销:数目太少,任务运行缓慢. 问题2:shuffle磁盘IO时间长解决方式:设置spark.local.dir为多个磁盘,并设置磁盘为IO速度快的磁盘,通过增加IO来优化shuffle性能: 问题3:map|red…
开发调优篇 原则一:避免创建重复的RDD 通常来说,我们在开发一个Spark作业时,首先是基于某个数据源(比如Hive表或HDFS文件)创建一个初始的RDD:接着对这个RDD执行某个算子操作,然后得到下一个RDD:以此类推,循环往复,直到计算出最终我们需要的结果.在这个过程中,多个RDD会通过不同的算子操作(比如map.reduce等)串起来,这个“RDD串”,就是RDD lineage,也就是“RDD的血缘关系链”. 我们在开发过程中要注意:对于同一份数据,只应该创建一个RDD,不能创建多个R…
[Java序列化与反序列化] Java序列化是指把Java对象转换为字节序列的过程:而Java反序列化是指把字节序列恢复为Java对象的过程.序列化使用场景:1.数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文件里).2.远程通信,即在网络上传送对象的字节序列. 这篇文章写的不错https://blog.csdn.net/wangloveall/article/details/7992448 [Spark序列化与反序列化场景] 在Spark中,主要有三个地方涉及序列化与反序列化…
1.Spark 属性Spark应用程序的运行是通过外部参数来控制的,参数的设置正确与否,好与坏会直接影响应用程序的性能,也就影响我们整个集群的性能.参数控制有以下方式:(1)直接设置在SparkConf,通过参数的形式传递给SparkContext,达到控制目的.(通过set()方法传入key-value对)比如: val conf = new SparkConf() .setMaster(”local[2]“) #注意1 .setAppName(”test“) .set("spark.core…
背景 在某地市开展项目的时候,发现数据采集,数据探索,预处理,数据统计,训练预测都需要很多资源,现场资源不够用. 目前该项目的资源3台旧的服务器,每台的资源 内存为128G,cores 为24 (core可暂时忽略,以下仅考虑内存即可) . 案例分析 我们先对任务分别分析,然后分类. 数据采集基于DC,接的是Kafka的源,属于流式,常驻任务.kafka来新数据时才需要资源,空闲时可释放.目前占用的资源情况为:28( topic数)*2(线程数)*1G = 56G,且该值会随着带采集增量表数量的…
前言 由于Springboot默认提供了序列化方式并不是非常理想,对于高要求的情况下,序列化的速度和序列化之后大小有要求的情况下,不能满足,所以可能需要更换序列化的方式. 这里主要记录更换序列化的方式以及其中一些出现问题. 坑坑坑坑坑坑!!! 这次踩的坑坑. 序列化方式更换 第一步,加入依赖 //protostuff序列化依赖 compile group: 'io.protostuff', name: 'protostuff-runtime', version: '1.6.0' compile…
  spark优化:在一定范围之内,增加资源与性能的提升是成正比的. 因此,       一个cpu core  执行一个task线程. task数: 若有 cpu core 2个.num-executor 2个  那么task有4个 公式:task =  num-executor * cpu core .   cpu core  共有50个.一个程序一般设置为总数量的1/3或1/2   driver : 分配task 到每个work                        从yarn申请…