说一下spark streaming如何处理反压

spark streaming程序中当计算过程出现batch processing time > batch interval的情况时,意味着处理数据的速度小于接收数据的速度,如果这种情况持续过长的时间,会造成数据在内存中堆积,导致receiver所在executor内存溢出等问题(如果设置StorageLevel包含disk,则内存存放不下的数据会溢写到disk,加大延迟),可以通过设置参数spark.streaming.receiver.maxRate来限制receiver的数据接收速率,此举虽然可以通过限制接收速率,来适配当前的处理能力,防止内存溢出,但也会引入其他问题。比如:producer数据生产高于maxRate,当前集群处理能力也高于maxRate,这就会造成资源利用率下降等问题。为了更好的协调数据接收速率与资源处理能力,spark streaming从v1.5开始引入反压机制(back-pressure),通过动态控制数据接收速率来适配集群数据处理能力。
Spark Streaming Backpressure:根据jobScheduler反馈作业的执行信息来动态调整receiver数据接收率。通过属性“spark.streaming.backpressure.enabled”来控制是否启动backpressure机制,默认值false,即不启用。
[https://blog.csdn.net/su20145104009/article/details/82762719]

你可能感兴趣的:(说一下spark streaming如何处理反压)