自己 spark 优化心得

Spark 优化

资源调优

1. 阻塞间隔

有一个配置参数:spark.streaming.blockInterval,它的意思是每间隔多少秒后,Spark才把接收到的数据组成数据块存到Spark中。官网推荐的最小值是50ms,默认值200ms。假设实例化InputDStream时设置的Duration(batch interval)为1秒(1000ms),那么任务执行时,总共有 1000 / 200 = 5 个block,每个block将对应一个task。如果task的数量少于每台机器配置的core的数量,则说明资源没有被很好的利用。应减少 spark.streaming.blockInterval 或增加batch interval。

​ 注意:官网并没有说要使得task的数量和core的数量一致。能想到两个的原因:(1)receiver也会占用core (2)driver也会占用core

2. 设置正确的Batch Interval

​ 每个时间间隔提交的job应该能处理完这个时间间隔内收到的数据。可以通过Web UI 去查看批处理的时间是否小于interval

3. executors , 内存 核心数等 分配

可以先设置的比较大,然后根据spark 的Web UI 来确定合适的资源分配.

代码调优

避免创建重复的RDD, 尽可能复用RDD,对多次使用的RDD进行持久化

数据倾斜

美团解决数据倾斜的方案

https://tech.meituan.com/2016/05/12/spark-tuning-pro.html

参考链接

  • spark调优指南,8各个方面 https://zhuanlan.zhihu.com/p/54293797
  • 美团spark性能优化基础篇 https://tech.meituan.com/2016/04/29/spark-tuning-basic.html
  • 美团spark性能优化高级篇 https://tech.meituan.com/2016/05/12/spark-tuning-pro.html

未完待续…

你可能感兴趣的:(学习笔记,各种坑,spark,大数据)