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中使用的。

相关推荐
Elastic 中国社区官方博客12 小时前
Elasticsearch 下采样方法:最后值采样 vs. 聚合采样
大数据·运维·elasticsearch·搜索引擎·全文检索
数字时代全景窗12 小时前
从OpenClaw、Palantir、SpaceX,看颠覆式创新的四个层次(5)传统财务模型的局限
大数据·人工智能·架构·软件工程
多年小白12 小时前
复盘】2026年5月21日(周四)
大数据·人工智能·ai·金融·区块链
1892280486112 小时前
NY379固态MT29F32T08GSLBHL8-36QA:B
大数据·服务器·人工智能·科技·缓存
jkyy201413 小时前
顺应IoT与健康产业融合趋势,补齐中小企业健康数字化短板
大数据·人工智能·信息可视化·健康医疗
云栖梦泽在13 小时前
AI安全实战:AI模型投毒攻击的检测与修复实战
大数据·人工智能·安全
随身数智备忘录13 小时前
安全生产法详解:安全生产法如何规范企业安全管理行为?
大数据·人工智能
狒狒热知识13 小时前
软文营销媒体发稿效果倍增逻辑内容渠道平台三维协同运营解析
大数据
程序猿追13 小时前
行业新趋势:Agent 重构,企业大屏从静态展示走向智能交互
大数据·人工智能·microsoft
维双云13 小时前
搭建美妆小程序,纯展示产品类型的,怎样做更适合中小商家?
大数据