SparkStreaming调优

  • Spark Streaming 中需要大量的序列化和反序列化操作,在2.0.0以上的 Spark 版本中,我们应当优先考虑使用 Kryo 序列化方式。
  • 对于非常大的变量,如配置信息,可以提前利用广播变量的方式传送给每一个节点。
  • 在流式处理系统中,我们需要兼顾数据的接收和数据处理,即消费数据的速率要赶上生产数据的速率。当发现生产数据速率过慢时,可以考虑增加并行度,使用更多的接收器(Receiver);如果处理速度过慢,可以考虑加机器、优化程序逻辑及 GC 优化等方式。
  • Spark 内存分为执行类内存和存储类内存,执行类内存可以剥夺存储类内存空间,但是存储类内存空间有一个最低阈值会保证保留。
  • 内存优化最简单的方式是使用序列化格式进行对象存储,另外一方面考虑到 Java/Scala 对象本身会有所开销,应尽可能减少对象的数量。
  • 对于 Spark 而言,垃圾回收采用 G1GC,而 Spark Streaming 采用 CMS。
点击此处
隐藏目录