flink和其他框架得对比

183 阅读2分钟

storm中sbolt用来读数据,bolt用来处理数据,高级的功能需要自己来实现。

spark streaming :微批次,准实时,微批次的task不停的进线程池,出线程池,

flink:设计之初的理念就比较先进,再加上阿里把他收购了,技术的底蕴非常强。

spark streming设置的时间间隔即使设置称毫秒,延迟也比较高?

因为每一个批次的产生,每一个task的调度,执行完之后要从线程池里面释放掉

flink为什么快?

task一旦产生,调度到taskmanager里面就不出来了,

sparkstreaming实现一个聚合类的exactly-once,把数据处理了,进行一些累加,每一个 批次会产生一个结果,要历史数据累加,可以使用upstatebykey,用sparkstreaming里面的状态,但是这个状态api不是那么的灵活,不是那么的好用,那就意味着我们要把中间结果存到外面的数据库里面,我们原来把他存到mysql,redis,但是每一个批次来了,我们都要频繁和外面的数据库交互,如果外面的数据库出现问题了,甚至中间结果都会丢掉,需要再同一个事务中存储偏移量和中间结果,来容错

flink相对spark有什么优势?

以实时的思想设计,将批处理视为特殊的流处理即有界数据流

可以灵活部署,部署的yarn上,可以部署云端,

中间结果放内存一份,定期持久化。

spark streaming

flink

dstream

datastream

transformation

transfomation

acion

sink

task

subtask

pipeline

oprater chain

dag

dataflow graph

master+driver

jobmanager

worker+executor

taskmanager

jobmanager

也成为master,用于协调分布式运行,它用来调度他上课,协调检查点,协调失败是恢复等。

flink运行时至少存在一个master,如果配置得高可用,会存在多个master,他们其中有一个leader,而其他得都是standby .

taskmanager

也称为worker,用于执行一个dataflow得task,数据缓冲和data streams得数据交换

flink运行时至少会存在一个taskmanager,jobmanager可以直接运行再物理机上,或者运行再yarn这样的资源调度框架,taskmanager通过网络链接到jobmanager,通过rpc通信告知自身的可用性进而获得任务分配。