欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

对比实时计算框架:Flink、Spark Streaming和Storm

最编程 2024-01-03 15:40:57
...

Spark Streaming

Spark Streaming 只支持处理时间,Structured streaming 支持处理时间和事件时间,同时支持 watermark 机制来处理滞后数据。

Flink

Fink 支持三种时间机制:事件时间,注入时间,处理时间,同时支持 watermark 机制处理滞后数据。

Storm

新版本的Storm也支持事件时间,处理时间,同时支持watermark 机制。

 

反压机制(Back pressure)

在实时应用中,当实时处理的中间计算节点或者数据输出节点处理数据的速度变慢,需要通过反压机制将阻塞反馈给数据输入节点,降低数据输入速率,避免数据持续堆积。

Spark Streaming

Spark Streaming 是增加了基于PID算法的 RateController,通过batch计算完成后反馈回来的任务处理的结束时间、调度时间、处理时间、消息条数来计算当前速率,进而可以计算得到一个 offset,然后跟限速设置最大消费条数比较得到一个最终要消费的消息最大 offset。

spark.streaming.backpressure.enabled 设置为 true 开启反压

spark.streaming.kafka.maxRatePerPartition 每个partition每秒最多消费条数

spark.streaming.backpressure.rateEstimator 速率估算器类,目前只支持 pid 。

Flink

与 Spark Streaming 的反压不同的是,Flink 是 Jobmanager 针对每一个 task 每 50ms 触发 100 次 Thread.getStackTrace() 调用,求出阻塞的占比。