47、Flink 的 Data Source 原理

news2024/11/16 9:57:51
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 也就终止任务了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1792980.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Xcode设置cocoapods库的最低兼容版本

目录 前言 1.使用cocoapods遇到的问题 2.解决办法 1.用法解释 1. config.build_settings: 2.IPHONEOS_DEPLOYMENT_TARGET 2.使用实例 3.注意事项 1.一致性 2.pod版本 前言 这篇文章主要是介绍如何设置cocoapods三方库如何设置最低兼容的版本。 1.使用cocoapods遇到的…

LitCTF2024部分wp

litctf wp 第一次ak了web和misc,非常激动,感谢lictf给我这个机会 最终成果 全靠队里的密码逆向✌带飞。一个人就砍了近一半的分数 这里是我们队的wp web exx 题目名反过来就是xxe,考察xxe,查看登录的数据包 发现传的就是xml…

ast.js是什么?

在devtools分析网站时,出现了ast.js的页面。那么,什么是ast.js?它有什么用? 经查询,AST是抽象语法树(Abstract Syntax Tree)也称为AST语法树,指的是源代码语法所对应的树状结构。也就是说&…

wandb安装与使用 —— 用于跟踪、可视化和协作机器学习实验的工具

文章目录 一、wandb简介二、wandb注册与登陆(网页) —— 若登录,则支持在线功能三、wandb安装与登陆(命令行) —— 若不登录,则只保留离线功能四、函数详解4.1、wandb.init() —— 初始化一个新的 wandb 实…

AI图书推荐:《如何利用ChatGPT在线赚钱》

这本书《如何利用ChatGPT在线赚钱》($100m ChatGPT_ How To Make Money Online With ChatGPT -- Sharp, Biily -- 2023 )主要阐述如何利用ChatGPT这一强大的语言模型工具在互联网上创造收入。 以下是各章节内容的概要: **引言** - 介绍了Chat…

批量处理文件名:高效替换与插入文字,优化文件管理新策略,轻松提升工作效率

文件管理成为我们工作中不可或缺的一环。面对大量的文件,如何高效、精准地处理文件名,成为了提升工作效率的关键。今天,我们向您推荐一款能够轻松实现文件名批量处理的神器——文件批量改名高手,助您优化文件管理,提升…

GPT-4 Turbo 和 GPT-4 的区别

引言 人工智能(AI)领域的发展日新月异,OpenAI 的 GPT 系列模型一直是这一领域的佼佼者。GPT-4 和 GPT-4 Turbo 是目前市场上最先进的语言模型之一。本文将详细探讨 GPT-4 和 GPT-4 Turbo 之间的区别,以帮助用户更好地理解和选择适…

白酒:全球化背景下产地白酒的国际竞争与合作

在全球化背景下,云仓酒庄豪迈白酒作为中国白酒的品牌之一,面临着国际竞争与合作的机遇与挑战。国际市场竞争的激烈以及消费者需求的多样化,要求云仓酒庄豪迈白酒不断提升品质、拓展市场以及加强国际合作,以提升品牌竞争力和市场份…

QQ号码采集器

寅甲QQ号码采集软件, 一款采集QQ号、QQ邮件地址,采集QQ群成员、QQ好友的软件。可以按关键词采集,如可以按地区、年龄、血型、生日、职业等采集。采集速度非常快且操作很简单。

图神经网络实战(12)——图同构网络(Graph Isomorphism Network, GIN)

图神经网络实战(12)——图同构网络 0. 前言1. 图同构网络原理2. 构建 GIN 模型执行图分类2.1 图分类任务2.2 PROTEINS 数据集分析2.3 构建 GIN 实现图分类2.4 GCN 与 GIN 性能差异分析 3. 提升模型性能小结系列链接 0. 前言 Weisfeiler-Leman (WL) 测试…

simplicity studio 5 修改设备电压

工装板的soc额定输入电压为1.5v,而常态下ttl高电平为5v/3.3v,所以需要设定烧录程序时的设备电压。 确保连接设备,并且被识别。 进入管理员模式。 烧录.hex文件快捷方法。

基于springboot实现毕业论文管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现毕业论文管理系统演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本毕业论文管理系统就是在这样的大环境下诞生,其可以帮助…

Linux 35.5 + JetPack v5.1.3@ ego-planner编译安装

Linux 35.5 JetPack v5.1.3 ego-planner编译安装 1. 源由2. 编译&安装Step 1:依赖库安装Step 2:建立工程Step 3:编译工程Step 4:安装工程 3. 问题汇总3.1 planner/plan_env - OpenCV3.2 uav_simulator/local_sensing - CUDA优…

python元组容器

""" 元组 ---不可变的容器 """ # 不写逗号就是字符串 fruits (watermelon) print(type(fruits)) # 一元组需要加逗号 fruits (watermelon,) print(type(fruits))# 元组运算--重复运算 fruits (watermelon, apple, banana, peach, apple) pri…

UE5-人物角色动画蓝图

这里主要从零给角色创建移动的蓝图,包含多种状态 创建 首先在角色骨骼网格体上右键创建动画蓝图 进入,在AnimGraph界面创建一个状态机(stateMachine) Idle 进入状态机,拉出来创建一个newState,这里命名…

QML应用添加网络代理

在QML应用中我们可以通过QNetworkProxy和QNetworkAccessManager类给应用添加网络代理。QNetworkProxy是Qt网络模块中的一个类,用于配置网络请求的代理服务器。通过使用代理服务器,我们可以控制应用程序的网络流量,实现网络请求的转发、监视、和过滤等功能。代理服务器在很多…

【Linux】(一)——Linux基础和Linux命令基础语法

目录 Linux基础Linux发行版本Linux终端Linux命令 Linux基础 Linux,通常指的是GNU/Linux操作系统,这是一个开源且免费使用的类UNIX操作系统。它的核心组件——Linux内核,由林纳斯托瓦兹(Linus Torvalds)在1991年10月5日…

在应对流量攻击时,如何提高pcdn的可用性(贰)?

在应对流量攻击时,提高PCDN(Private Content Delivery Network)的可用性是一项关键任务。以下是一些建议措施: 一.优化资源分配与负载均衡: 监测各个节点的流量和负载情况,确保在流量攻击时能…

【嵌入式DIY实例】-OLED显示网络时钟

OLED显示网络时钟 文章目录 OLED显示网络时钟1、硬件准备与接线2、代码实现在上一个ESP8266 NodeMCU文章中,我们用DS3231 RTC芯片和SSD1306 OLED制作了一个简单的实时时钟,时间和日期显示在SSD1306屏幕上,并且可以通过两个按钮进行设置。 在本中,我们将使用ESP 8266 NodeMC…

一种基于小波域的增强独立分量分析方法(MATLAB)

独立分量分析ICA是二十世纪九十年代发展起来的一种多元统计和计算技术,目的是用来分离或提取随机变量、观测数据或信号混合物中具有独立特性的隐藏分量。ICA可以看作是主分量分析PCA和因子分析FA的扩展。与PCA和FA相比,ICA是一种更强有力的技术。当PCA和…