47、Flink 的 Data Source 原理

1.Data Source 原理
a)核心组件

一个数据 source 包括三个核心组件:分片(Splits)分片枚举器(SplitEnumerator) 以及 源阅读器(SourceReader)

  • 分片(Split) 是对一部分 source 数据的包装,如一个文件或者日志分区。分片是 source 进行任务分配和数据并行读取的基本粒度。
  • 源阅读器(SourceReader) 会请求分片 并进行处理,例如读取分片 所表示的文件或日志分区。SourceReader 在 TaskManagers 上的 SourceOperators 并行运行,并产生并行的事件流/记录流。
  • 分片枚举器(SplitEnumerator) 会生成分片 并将它们分配给 SourceReader 。该组件在 JobManager 上以单并行度运行,负责对未分配的分片进行维护,并以均衡的方式将其分配给 reader。

Source 类作为API入口,将上述三个组件结合在了一起

b)流处理和批处理的统一

Data Source API 以统一的方式对无界流数据和有界批数据进行处理。

流处理和批处理区别很小:在有界/批处理情况中,枚举器生成固定数量的分片,而且每个分片都必须是有限的;但在无界流的情况下,分片大小可以不是有限的,或者枚举器将不断生成新的分片。

c)示例

展示在流和批处理情况下 data source 组件如何交互;以下内容并没有准确地描述出 Kafka 和 File source 的工作方式。

有界 File Source

Source 包含待读取目录的 URI/路径(Path),以及一个定义了如何对文件进行解析的格式(Format)

  • 分片是一个文件,或者是文件的一个区域(如果该文件格式支持对文件进行拆分)。
  • SplitEnumerator 将会列举给定目录路径下的所有文件,并在收到来自 reader 的请求时对分片进行分配。一旦所有的分片都被分配完毕,则会使用 NoMoreSplits 来响应请求。
  • SourceReader 则会请求分片,读取所分配的分片(文件或者文件区域),并使用给定的格式进行解析。如果当前请求没有获得下一个分片,而是 NoMoreSplits,则会终止任务。

无界 Streaming File Source

与**有界 File Source **类似,除了 SplitEnumerator 从不会使用 NoMoreSplits 来响应 SourceReader 的请求,并且还会定期列出给定 URI/路径下的文件来检查是否有新文件;一旦发现新文件,则生成对应的新分片,并将它们分配给空闲的 SourceReader。

无界 Streaming Kafka Source

Source 将具有 Kafka Topic(亦或者一系列 Topics 或者通过正则表达式匹配的 Topic)以及一个 解析器(Deserializer) 来解析记录(record)。

  • 分片是一个 Kafka Topic Partition。
  • SplitEnumerator 会连接到 broker 从而列举出已订阅的 Topics 中的所有 Topic Partitions。枚举器可以重复此操作以检查是否有新的 Topics/Partitions。
  • SourceReader 使用 KafkaConsumer 读取所分配的分片(Topic Partition),并使用提供的 解析器 反序列化记录。由于流处理中分片(Topic Partition)大小是无限的,因此 reader 永远无法读取到数据的尾部。

有界 Kafka Source

每个分片(Topic Partition)都会有一个预定义的结束偏移量,其他与上述相同;一旦 SourceReader 读取到分片的结束偏移量,整个分片的读取就会结束。而一旦所有所分配的分片读取结束,SourceReader 也就终止任务了。

相关推荐
AI智图坊9 分钟前
AIGC赋能跨境电商:如何利用「图生图」与模型提取,破解POD节日款“卡图案”技术瓶颈?
大数据·人工智能·gpt·ai作画·aigc
Java_2017_csdn9 分钟前
ComplexKeysShardingAlgorithm 小结
java·大数据·算法
清辞8531 小时前
入门大模型工程师第十课----学习总结
大数据·人工智能·深度学习·学习·语言模型
数字化顾问3 小时前
(115页PPT)数字化工厂项目解决方案(附下载方式)
大数据
明志数科3 小时前
机器人长尾场景数据采集:实操方法论与成本控制
大数据·人工智能
Eileen Seligman4 小时前
0CTF/TCTF 2023 OLAPInfra Nashorn RCE + HDFS UDF RCE
大数据·hadoop·hdfs·ctf·rce
Sonnie0000001(马库斯)4 小时前
【Hadoop之HDFS替换方案】【Haoop远程挂载Cubefs】Cubefs对接Hadoop生态
大数据·hadoop·hdfs
好问者4 小时前
【大数据】:hdfs相关进程启停管理命令
大数据·hadoop·hdfs
财经资讯数据_灵砚智能4 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年6月6日
大数据·人工智能·python·ai·信息可视化·自然语言处理·灵砚智能
升鲜宝供应链及收银系统源代码服务5 小时前
升鲜宝AI助手 E-R 图与操作说明书(三)---升鲜宝生鲜配送供应链管理系统源代码服务
大数据·人工智能·机器学习·生鲜供应链源代码·供应链源代码出售·生鲜配送源代码服务·门店连锁系统源代码