Fork me on GitHub

Spark中的动态伸缩和反压机制

目录

  • 背景
  • 第一部分 常用快捷键
  • 参考文献及资料

背景

https://fares.codes/posts/dynamic-scaling-and-backpressure/

第一部分

  • 建议采用以下做法以实现更好的自动缩放比例:
    • 最好从相当大的集群和数量的执行程序开始,并在必要时进行缩减。(执行程序映射到YARN容器。)
    • 执行者的数量应至少等于接收者的数量。
    • 设置每个执行器的核心数,以使执行器具有一些多余的容量,这些容量超出了运行接收器所需的容量。
    • 内核总数必须大于接收器数量;否则,应用程序将无法处理收到的数据。
  • 设置spark.streaming.backpressure.enabledtrue,则Spark Streaming可以控制接收速率(基于当前的批处理调度延迟和处理时间),以便系统仅以其可以处理的速度接收数据。
  • 为了获得最佳性能,请考虑使用Kryo序列化程序在Spark数据的序列化表示和反序列化表示之间进行转换。这不是Spark的默认设置,但是您可以显式更改它:将spark.serializer属性设置 为org.apache.spark.serializer.KryoSerializer
  • 开发人员可以通过在不再需要DStream时取消缓存它们来减少内存消耗。

参考文献及资料

1、Job Scheduling,链接:https://spark.apache.org/docs/latest/job-scheduling.html#configuration-and-setup

0%