spark性能调优总结

1 序列化优化

使用高性能的序列化框架 kryo框架 大部分已经注册 如果没有注册 而是自定义的类 

SparkConf conf = new SparkConf().set("spark.serializer","org.apach.spark.serializer.Kryoserializer")

那么要注册 

2  数据结构优化 

   使用int代替UUID 使用数组等代替集合类 使用String组合代替集合类 减少包装类的使用,减少指针

   使用json代替嵌套对象

3 存储

 可以用cache() 存储到内存中或者通过checkpoint()存储到硬盘中

4 序列化持久化级别

对象存储到内存中可能会出现OOM 也可以将整个对象做序列化存储到硬盘

5 JVM优化

 存储:Executor占百分之60    运行:task可以使用百分之40 可以调整比例 提升内存避免OOM

 调整·eden 和 survive区和大小和比例

6 设置并行度

设置为core的数量的2-3倍 

 new SparkConf().set("spark.default.parallelism",x)

7 广播变量

所有文件一字节不差的要发送到所有节点,那么可以是用广播变量这样task和副本一对一可以变成executor和副本一对一 减少网络传输成本

8 数据本地化

9 算子

尽量不用groupByKey 而是用reduceByKey 因为reduceByKey会先在driver上预聚合,减少网络传输数据量

10 shuffle 调优

  设置consolidation 减少shuffle产生的文件数量

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值