8.2.4 Spark Streaming调优
Spark Streaming调优方式和Spark调优方式很相近,可以互相借鉴。
1.运行时间调优
并行度优化。确保任务使用整个集群的资源,防止数据倾斜。
减少数据序列化、反序列化以及减少Task提交和分发开销。用户可以通过配置使用Kyro使序列化更优化。当批处理窗口时间间隔非常小(例如小于500ms)时,提交和分发任务的延迟变得很大,此时应适当调大批处理窗口。通常情况下,使用Standalone模式和Coarse-grained Mesos模式会比使用Fine-Grained Mesos模式延迟更小。
设置合理的批处理窗口。Job是流水线执行,要防止流水线阻塞,就需要设置合理的批处理窗口。
2.空间占用调优
定时清理不用的数据。用户通过配置spark.cleaner.ttl时长来及时清理超时的无用数据及元数据。
GC(JVM垃圾回收)调优。具体方法可参考Spark性能调优的章节。
控制批处理量。Spark Streaming一个批处理窗口内接收到的所有数据均在Spark可用内存区域中存放。确保当前节点Spark的可用内存能够容纳这个batch窗口内的所有数据。