文章目录

什么是FlinkFlink的优点

Flink流处理的架构传统的数据处理结构有状态的流式处理流处理结构上的应用场景

Flink 的分层APIFlink 和 Spark 区别

什么是Flink

Flink就是一个大数据处理引擎的处理框架,是针对流进行的处理.

它是 Apache 旗下的一个框架和分布式的处理引擎,用于对无界和有界的数据进行状态的计算。

整体框架:

应用场景:

Flink保证的就要有:低延迟、高吞吐、结果的准确性和良好的容错性。

Flink的优点

批留统一

同一套代码,可以跑流也可以跑批 同一个SQL,可以跑流也可以跑批

性能卓越

高吞吐 低时延

规模计算

支持水平扩展架构 支持超大状态与增量检查点机制 大公司使用情况:

每天处理数万亿的事件 应用维护几TB大小的状态 应用在数千个CPU核心上运行

生态兼容

支持与Yarn集成 支持与Kubernetes集成 支持单机模式运行

高容错

故障自动重试 一致性检查点 保障故障场景下精确一次的状态一致性

Flink流处理的架构

传统的数据处理结构

事务处理方式:

在事务处理的方式上,它的数据处理批量上就不会很大,主要针对的就是事务的一个处理。

分析处理的方式: 数据处理的批量可以很大,但是数据处理的时间上不是很积极的。它离线的,响应比较慢。

有状态的流式处理

流处理的演变 将存储层放在了本地的一个状态,定期的将数据放在远端的持久化存储系统中。

lamnbda结构(第二代流处理结构) 用两套系统,同时保证低延迟和结果的准确。

新一代处理器——Flink 就是一套系统实现了lambda结构里的两个系统。

核心特点:

高吞吐、低延迟;(每秒处理数百万个事件,毫秒级延迟)结果的准确性;(Flink提供了时间事件(event-time)和处理事件(processing-time)语义)。对于乱序事件流,事件时间语义仍能提供一致且准确的结果。精确一次(exactly-once)的状态一致保证性;可以与众多常用存储系统进行连接;(如kafke、Hive、JDBC、HDFS、Redis等)高可用,支持动态扩展性。(本身高可用的设置,加上K8s、YARN和Mesos的紧密集成,再加上从故障中快速恢复和动态扩展任务额能力,Flink能做到以极少的停机时间7*24全天候运行)

流处理结构上的应用场景

事件驱动型应用

数据分析型应用

数据管道型应用

Flink 的分层API

越顶层越抽象,表达的含义越简明,使用起来越方便。越底层越具体,表达的能力越丰富,使用起来越灵活。

有状态流处理:通过底层API(处理函数),对最原始数据加工处理。底层API与DataStream API相集成,可以处理复杂的计算。

DataStream APl(流处理)和DataSet API(批处理)封装了底层处理函数,提供了通用的模块,比如转换(transformations,包括map、fatmap等),连接(joins),聚合( aggregations),窗口 (windows)操作等。 注意:Fink1.12以后,DataStream API已经实现真正的流批一体,所以DataSet API已经过时。

Table API 是以表为中心的声明式编程,其中表可能会动态变化。Table API遵循关系模型:表有二维数据结构,类似于关系数据库中的表;同时API提供可比较的操作,例如 select、project、join、group-by、ageregate等。我们可以在表与 DataStreamDataSet 之间无缝切换,以允许程序将 Table API 与 DataStream 以及 DataSet混合使用。

SQL这一层在语法与表达能力上与Table API类似,但是是以SQL查询表达式的形式表现程序。SQL抽象与Table API交互密切,同时 SQL 查询可以直接在Table API 定义的表上执行。

其中处于第三次的 DataStream 是最为核心的API。

Flink 和 Spark 区别

Spark以批处理为根本。

Spark数据模型:Spak 采用RDD模型,Spark Streanming 的DStream实际上也就是一组组小批数据RDD的集合。Spark运行时架构:Spak是批计算,将DAG划分为不同的stage,一个完成后才可以计算下一个。

Flink以流处理为根本

Flink数据模型:Flink基本数据模型是数据流,以及事件(Event)序列。Flink运行时架构:Flink 是标准的流执行模式,一个事件在一个节点处理完后可以直接发往下一个节点进行处理。

Spark 在底层数据处理上的逻辑上还是以批处理的方式进行。所以现在也有人将Spark的处理叫做伪流的处理,而Flink是为真正的流处理方式。

数据模型 Spark 采用的是 RDD 模型, spark steaming 的 DSream 实际上也是一组组小批量的 RDD 集合 Flink 基本数据模型就是数据流,以及事件(Event)序列运行时架构 Spark 是批计算,将 DAG 划分为不同的 stage ,一个完成后才可以计算下一个。 Flink 则是标准的六执行模式,一个事件在一个节点处理完后可以直接发往下一个节点处理。

Spark 就像是数据不动代码动,如果是说数据要做分区调整的话,代价就会非常的大,stage 就会十分的麻烦; 而Flink就是代码不动,数据动 。 铁打的营盘,流水的兵一样。

FlinkStreaming计算模型流计算微批处理时间语义事件时间、处理时间处理时间窗口多、灵活少、不灵活(窗口必须是批次的整数倍)状态有没有流式SQL有没有

精彩文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。