ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
1. 增加并行度。 确保使用整个集群的资源,而不是把任务集中在几个特定的节点上。对于包含 shuffle 的操作,增加其并行度以确保更为充分地使用集群资源。 2. 减少数据序列化,反序列化的负担。 Spark Streaming 默认将接受到的数据序列化后存储,以减少内存的使用。但是序列化和反序列话需要更多的 CPU 时间,因此更加高效的序列化方式(Kryo)和自定义的系列化接口可以更高效地使用 CPU。 3. 设置合理的 batch duration(批处理时间)。 在 Spark Streaming 中,Job 之间有可能存在依赖关系,后面的 Job 必须确保前面的作业执行结束后才能提交。若前面的 Job 执行的时间超出了批处理时间间隔,那么后面的 Job 就无法按时提交,这样就会进一步拖延接下来的 Job,造成后续 Job 的阻塞。因此设置一个合理的批处理间隔以确保作业能够在这个批处理间隔内结束时必须的。 4. 减少因任务提交和分发所带来的负担。 通常情况下,Akka 框架能够高效地确保任务及时分发,但是当批处理间隔非常小(500ms)时,提交和分发任务的延迟就变得不可接受了。使用 Standalone和 Coarse-grained Mesos 模式通常会比使用 Fine-grained Mesos 模式有更小的延迟。