Flink概述

一、Flink是什么

Flink是一个框架和分布式计算引擎,用于对有界(批量)和无界(流式)数据流进行有状态的计算。

在这个概念中,说明了Flink既可以进行流式处理又可以进行批量处理。对于有界数据流的处理就是批量处理;对于无界数据流的处理就是流式处理。

有界数据流和无界数据流的区别就是两者的数据输入有无终止。无界数据流无终止,数据源源不断的输入;有界数据流的输入数据有终止。

其次,Flink还是有状态的计算。状态就是在流处理的过程中需要的额外数据(比如中间结果),Flink会将这个数据保存成一个'状态',然后在后续的数据处理过程中会更新该状态。而且这个'状态'信息会被Flink保存在本身任务的内存中,同时为了'状态'的可恢复,Flink也会将'状态'信息持久化到磁盘中去。其大致流程如下:

二、Flink的主要特点

(1)、高吞吐和低延迟:Flink每秒可以处理百万级别的数据,且是毫秒级延时。

(2)、结果的准确性。Flink提供了事件时间和处理时间两种语义。对于乱序的数据,Flink利用事件时间语义一样可以保证数据结果的一致性。比如:某一个数据发出时候的时间是23:59(事件时间)分,到达Flink被处理时的时间是第二天的0:01(处理时间)分,那么Flink会将这条数据按照前一天的事件时间来处理,从而保证这一天的数据处理结果是准确的。其实这个特点是要和Spark Streaming对比着看才能体会到,Spark Streaming只有处理时间语义,就是每个数据只会被标记被处理时候的时间,那如果就像是上面的例子一样,这条数据就不会被算作是前一天的数据,而是会被当做是第二天的数据来处理。

(3)、精确一次(exactly-once)的状态一致性保证。

(4)、高可用。Flink本身可以保证高可用,加上与K8s,YARN和Mesos的集成,再加上从故障中快速恢复和动态扩展的能力,Flink可以做到7*24小时运行,极少停机。

三、Flink和Spark Streaming的对比

从数据处理方式对比:Flink是流式处理;Spark Streaming是微批量处理。

从时间语义上对比:Flink有事件时间语义和处理时间语义;Spark Streaming只有处理时间语义。

从状态上来看:Flink是会在内存中存储状态的;Spark Streaming中不会在内存中存储状态,他一般要将中间结果存储在MySQL或者Redis中的。

从流式SQL中来说:Flink是支持使用Flink SQL来进行数据处理的;Spark中尽管有Spark SQL但是他并不是针对批量数据的数据处理,不是在Spark Streaming中使用的。

相关推荐
袋鼠云数栈7 分钟前
非结构化数据也能“周期调度“:离线开发BatchWorks的多模态数据同步实践
大数据·人工智能·多模态数据·离线开放
算了吧956911 分钟前
GEO服务商选型指南:2026年企业评估框架与决策路径
大数据·人工智能·物联网
智塑未来23 分钟前
App竞品数据平台选型指南:从入门到精通的全维度研判方法
大数据
回眸不遇41 分钟前
Elasticsearch嵌套类型nested使用指南<第七十二篇>
大数据·elasticsearch·jenkins
龙亘川1 小时前
城市运管服平台下综合办公数字化建设实践与思考
大数据·人工智能·智慧城市·开源软件·数据可视化
SM_YHJ2 小时前
RFID通道门禁与资产台账联动的自动登记技术实现方案
大数据·数据库·人工智能
liliangcsdn2 小时前
PMI参数的解读与应用分析
大数据
AI编程教父3 小时前
WorkBuddy企业培训怎么选?腾讯云公开课程与红烁AI内训对比
大数据·人工智能
大大大大晴天3 小时前
湖仓时代的数据生命周期治理:让数据留得有价值、删得有依据
大数据
Likeadust3 小时前
连锁扩张管控难?一套视频会议/直播/点播/集群对讲EasyDSS打通门店全流程数字化
大数据·媒体·easydss