Flink学习(二)-基础概念

一、流处理

分为有界流(bounded stream )和无界流(unbounded stream)。

通过上图 ,可以知道,

有界流:有明显的边界;而无界流,则只有开始,没有结束。

批处理是有界数据流处理的范例。在这种模式下,你可以选择在计算结果输出之前输入整个数据集,这也就意味着你可以对整个数据集的数据进行排序、统计或汇总计算后再输出结果。

流处理正相反,其涉及无界数据流。至少理论上来说,它的数据输入永远不会结束,因此程序必须持续不断地对到达的数据进行处理。

由 source 开始、经过自定义算子转换(Transformation)成的 dataflow后,以一个或者多个 sink 结束。

三、算子之间数据传输方式

1,一对一直传)模式

可以保留元素的分区和顺序信息,即同一分区的数据只会进入到下游算子的同一分区。

2,重新分发模式

会更改数据所在的流分区。当你在程序中选择使用不同的 transformation ,每个算子子任务也会根据不同的 transformation 将数据发送到不同的目标子任务。

常见的数据分发模式

  • keyBy()(通过散列键重新分区);
  • broadcast()(广播);
  • rebalance()(随机重新分发)

四、自定义时间流处理

关注事件本身发生的顺序而不是事件被传输以及处理的顺序;

记录在数据流中的事件时间的时间戳,而不是处理数据的机器时钟的时间戳。

五,有状态流处理

意味着如何处理一个事件可能取决于该事件之前所有事件数据的累积结果。有状态算子的并行实例组在存储其对应状态时通常是按照键(key)进行分片存储的。每个并行实例算子负责处理一组特定键的事件数据,并且这组键对应的状态会保存在本地。

六,通过状态快照实现的容错

通过状态快照和流重放两种方式的组合,Flink 能够提供可容错的,精确一次计算的语义。这些状态快照在执行时会获取并存储分布式 pipeline 中整体的状态,它会将数据源中消费数据的偏移量记录下来,并将整个 job graph 中算子获取到该数据(记录的偏移量对应的数据)时的状态记录并存储下来。当发生故障时,Flink 作业会恢复上次存储的状态,重置数据源从状态中记录的上次消费的偏移量开始重新进行消费处理。而且状态快照在执行时会异步获取状态并存储,并不会阻塞正在进行的数据处理逻辑。

相关推荐
Knight_AL29 分钟前
Flink 核心算子详解:map / flatMap / filter / process
大数据·python·flink
重生之绝世牛码3 小时前
Linux软件安装 —— Flink集群安装(集成Zookeeper、Hadoop高可用)
大数据·linux·运维·hadoop·zookeeper·flink·软件安装
Blossom.1183 小时前
实时知识增强大模型:基于Flink的流式向量索引与动态RAG系统
大数据·运维·人工智能·python·flink·prompt·知识图谱
Hello.Reader3 小时前
Flink SQL 接入 Amazon Kinesis Data Streams 版本迁移、DDL、EFO/Polling、分区与常见坑一篇搞定
大数据·sql·flink
Hello.Reader1 天前
Flink DynamoDB Connector 用 Streams 做 CDC,用 BatchWriteItem 高吞吐写回
大数据·python·flink
Hello.Reader1 天前
Flink Elasticsearch Connector 从 0 到 1 搭一个高吞吐、可容错的 ES Sink
大数据·elasticsearch·flink
Hello.Reader1 天前
Flink Firehose Sink 把实时流数据稳定写进 Amazon Kinesis Data Firehose
大数据·flink
ask_baidu2 天前
监控Source端Pg对Flink CDC的影响
java·大数据·postgresql·flink
Hello.Reader2 天前
Apache Cassandra Connector:Flink 与宽列存储的高吞吐协作
大数据·flink·apache
yumgpkpm3 天前
Cloudera CDP/CMP华为鲲鹏版下 Spark应用加速,华为昇腾芯片的实用配置过程
hive·hadoop·elasticsearch·flink·kafka·hbase·cloudera