SparkStreaming反压机制
2024-03-14 11:32:03 0 举报
SparkStreaming是一种实时数据处理引擎,其反压机制是其核心功能之一。该机制通过监控处理任务的执行状态,智能调节数据处理的速度,以保持系统稳定,避免数据丢失。当数据处理任务过重,导致处理速度跟不上数据输入速度时,反压机制会自动调整数据处理的速度,以避免数据堆积,确保数据处理的及时性和准确性。同时,反压机制也会向数据源发出信号,降低数据发送的速度,避免进一步增加系统的负担。此外,反压机制还能根据系统的负载情况,动态调整数据处理任务的数量,以充分利用系统资源,提高数据处理的效率。
作者其他创作
大纲/内容
开启了Acker机制 通过手动设置参数实现反压效果下游处理不过来 积压的数据超过了 设置的阈值上游停止发送缺点:设置小了 吞吐量上不去 设置大了OOM异常 有震荡,数据流会处于一个颠簸状态,效果不如逐级反压关闭acker机制的程序无效
Spark反压机制
自动反压监控接收队列情况 下游处理速度超过高水位值时 将信息发送给 zookeeper zookeeper会通知所有工作节点降低发送速度
组件
手动设置参数-->spark.streaming.receiver.maxRate处理数据的速度小于接收数据的速度 会造成数据在内存中堆积 导致Receiver所在Executor内存溢出 限制接收速率 但是会导致节点资源利用不到位
Strom反压机制
动态控制数据接收速率来适配集群数据处理能力
RateLimiter
新版本阈值
令牌桶机制恒定的速率源源不断地产生令牌令牌消耗比产生快 则会把桶填满 桶只会保存桶大小的数据 多的会溢出取到令牌继续操作 取不到否则阻塞 用完之后不用放回
新版本
旧版本rate
抽象类 限流器 令牌如果Executor中task每秒计算的速度大于该值则阻塞如果小于该值则通过
反压机制上游输入太快 下游处理不过来 导致数据积压节点崩溃
RateEstimator
旧版本阈值
监控任务的完成完成之后获取:1.处理结束时间 2.处理时间 3.在调度队列中的等待时间 4.当前批次处理的记录数
RateController
用来估算最大处理速率发布新速率
0 条评论
下一页