当前位置: 首页 > news >正文

Fink初识

文章目录

  • 1. Flink核心组件
  • 2. Flink核心概念
  • 3. 执行应用程序的三种模式
    • 3.1 session mode
    • 3.2 per-job mode
    • 3.3 application mode
  • 4. Job Manager
    • 4.1 Resource Manager
    • 4.2 Dispatcher
    • 4.3 Job Master
  • 5. Watermark
  • 6. State
  • 7.时间属性
    • 7.1 处理时间 processing time
    • 7.2 事件时间 Event time
    • 7.3 摄取时间Ingestion Time
  • 8. 检查点与保存点
    • 8.1 检查点 check point
    • 8.2 保存点
  • 9. 窗口
    • 9.1 窗口分类
    • 9.2 窗口操作通常步骤

1. Flink核心组件

组件名组件职责实现
Fink Client将作业提交给Job ManagerCommand Line Interface, Rest Endpoint, Sql Client , python REPL, Scala REPL
Job ManagerFlink的中心协调组件Standalone、Kubernetes、YARN、Mesos
Task Manager执行flink作业的进程

2. Flink核心概念

概念说明
Task一个阶段多个功能相同subTask的集合,类似于Spark中的TaskSet
subTaskFlink中的最小执行单元,是一个Java类的实例,这个Java类中有属性和方法,完成具体的计算逻辑。
SlotFlink 中计算资源进行隔离的单元,一个 Slot 中可以运行多个 subTask,但是这些 subTask 必须是来自同一个 Application 的不同阶段的 subTask
StateFlink 在运行过程中计算的中间结果
SourceFlink作业的数据源,可以是本地文件、kafka或者socket等等
Transformation责处理数据的算子,包括map,filter、reduce等等
SinkFlink作业的数据存放点,可以是mysql,kafka等

3. 执行应用程序的三种模式

  • session mode
  • per-job mode
  • application mode

3.1 session mode

Session Mode 是预分配资源的,也就是提前根据指定的资源参数初始化一个 Flink 集群,拥有固定数量的 JobManager 和 TaskManager。(JobManager 只有一个)
这样做的好处是,提交的作业可以直接执行,无需花费额外的开销去启动集群。相应地,Session Mode 的弊端也很明显。如果 TaskManager 因某个作业崩溃了,那么该 TaskManager 上运行的所有作业都会受到故障的影响。除了对相关作业产生负面影响外,这还意味着潜在的大规模恢复过程。此外,只有一个集群也意味着 JobManager 的负载大大增加,这是具有一定风险的。

3.2 per-job mode

Per-Job Mode 可以基于资源协调框架(如 YARN、k8s)为每个提交的作业启动专属的 Flink 集群。这提供了更好的资源隔离保证,当作业完成后,集群将被关闭,所有附属的资源也会被清除。
这样的好处是,一个作业的 TaskManager 失败不会影响其他作业的运行,且 JobManager 的负载是分散开来的,不存在单点问题。当然,缺点也很明显,为每个作业启动一个集群会消耗更多的集群资源,同时也会导致一定程度的延时。

3.3 application mode

在 Per-Job Mode 和 Session Mode 下,应用程序的 main 方法都是在客户端执行的,此过程包括:

  • 在本地下载应用程序依赖项
  • 提取 Flink 运行时可以理解的应用程序表示形式(即 JobGraph)
  • 将依赖项和 JobGraph 传输到 Flink 集群

这导致客户端需要消耗非常多的资源,因为它可能需要大量的网络带宽来下载依赖项并将二进制文件传输到集群,并且需要 CPU 资源来执行 main 方法。当有多用户共享客户端时,这个问题将更加明显。

为解决 Per-Job Mode 和 Session Mode 存在的这个缺陷,Application Mode 在 Per-Job Mode 的基础上,将应用程序的 main 方法转移到 JobManager 上执行。通过这种体系结构,Application Mode 提供了与 Per-Job Mode 相同的资源隔离和负载平衡保证,同时也解决了客户端负载过多的问题。

与 Per-Job Mode 相比,Application Mode 允许提交包含多个作业的应用程序。作业的执行顺序不受部署模式影响,但受启动作业调用位置的影响。使用 execute 会导致“下一个”作业的执行被推迟到“该”作业完成为止,使用非阻塞的 executeAsync() 可以使“下一个”作业在“此”作业完成之前就开始

4. Job Manager

Job manager由三个不同的组件组成:

  • Resource Manager
  • Dispatcher
  • Job Master

4.1 Resource Manager

Resource Manager负责Flink集群中的资源提供、回收与分配。
它是 Task Slot (Flink 集群中资源调度的单位,位于 TaskManager 中)的管理者。当 ResourceManager 接收来自 JobManager 的资源请求时,会将存在空闲 slot 的 TaskManager 分配给 JobManager 执行任务。

4.2 Dispatcher

Dispatcher 提供了一个 REST 接口,用来提交 Flink 应用程序,并为每个提交的作业启动一个新的 JobMaster。此外,它还会启动 Flink Web UI 用来显示作业执行信息。

4.3 Job Master

负责管理单个JobGraph的执行,Flink集群中可以同时运行多个作业,每个作业都有自己的Job Master。

5. Watermark

  • 从数据结构看,watermark是一个包含时间戳的数据对象。
  • 从定义上看,watermark是一个度量Event time进展的机制,表明Event time在watermark之前的元素均已流入,不应该再有Event time小于watermark的元素进入数据流。
  • 从功能上看,watermark可以起到控制窗口触发时机的作用,根据这种特性,用户可以为watermark设置一个延时参数,实现延迟触发窗口,为乱序数据流下的窗口提供一定的等待时间。

6. State

State 是记录 有状态算子任务 计算结果的载体,支持中间结果的读取、保存、更新与清除。

7.时间属性

7.1 处理时间 processing time

执行处理操作的机器的系统时间

7.2 事件时间 Event time

每个事件在对应的设备上发生的时间,也就是数据生成的时间。数据一旦产生,这个时间自然就确定了,所以他作为一个属性嵌入到数据中,是这条数据的时间戳。

但是由于分布式系统中网络传输延迟的不确定性,实际应用中我们要面对的数据流往往是乱序的。在这种情况下,就不能简单地把数据自带的时间戳当作时钟了,而需要用另外的标志来表示事件时间进展,在Flink中把它叫作事件时间的“水位线”(Watermarks)。

7.3 摄取时间Ingestion Time

摄取时间是数据被 Flink 任务接收的时间。
这种时间语义类似于处理时间,但时间戳是在数据进入 Flink 系统时生成的,而不是在具体任务处理时生成。
摄取时间模式下,事件的水位线和时间戳与事件实际生成的时间无关,而是与它们进入 Flink 系统的时间相关。

8. 检查点与保存点

8.1 检查点 check point

  • 检查点是 Flink 的一种自动故障恢复机制。
  • 它周期性地对 Flink 作业的当前状态进行快照,并将其存储到持久化存储中。
  • 检查点可以配置为在一定时间间隔内自动触发,或者在处理了特定数量的元素后触发。
  • 在检查点过程中,Flink 会生成一系列检查点屏障(barriers),这些屏障会阻止数据流,直到所有数据都达到了相同的检查点。
  • 检查点状态包括了键控状态(Keyed State)和操作符状态(Operator State)。

8.2 保存点

  • 保存点是 Flink 作业的手动持久化快照,可以被视为作业的特定版本的备份。
  • 与检查点不同,保存点是手动触发的,并且可以被停止或取消。
  • 保存点非常有用于升级 Flink 作业、修改作业的并行度,或者在不同环境之间迁移作业。
  • 保存点可以包含作业的状态和配置信息,允许作业从特定的状态和配置开始执行。

9. 窗口

9.1 窗口分类

窗口是 Flink 中用于处理有限数据子集的机制,可以是基于时间的(如滚动窗口、滑动窗口)或基于数据量的(如全局窗口、滚动计数窗口)。

    1. 滚动窗口:滚动窗口是固定大小的窗口,每个窗口不会重叠。例如,每5秒钟一个窗口,从00:00:00到00:00:05是第一个窗口,00:00:05到00:00:10是第二个窗口,以此类推。
    1. 滑动窗口:滑动窗口同样是固定大小,但每个窗口之间有重叠。例如,一个大小为10秒,滑动步长为5秒的窗口,会在每个5秒的边界上滑动。
    1. 会话窗口是根据事件的自然间隙来分组的窗口。如果事件在一定时间内没有发生,则会启动一个新的会话窗口。会话窗口的大小不固定。
    1. 全局窗口:全局窗口是包含所有数据的单个窗口,通常与特定的触发器和evictor(驱逐器)结合使用,以确定何时输出结果。
    1. 计算窗口:计数窗口是基于事件数量的窗口,当达到指定数量的事件时,窗口会被触发处理。

9.2 窗口操作通常步骤

  • 分配器(Window Assigner):定义如何将事件分配到一个或多个窗口。
  • 触发器(Trigger):定义何时触发窗口的操作,例如计算窗口内的数据或输出窗口的结果。
  • 计算函数(Reduce Function 或 Aggregate Function):对窗口内的数据执行聚合操作。
  • 驱逐器(Evictor):定义窗口中数据的生命周期,例如清除旧数据或限制窗口内数据的数量。

相关文章:

Fink初识

文章目录 1. Flink核心组件2. Flink核心概念3. 执行应用程序的三种模式3.1 session mode3.2 per-job mode3.3 application mode 4. Job Manager4.1 Resource Manager4.2 Dispatcher4.3 Job Master 5. Watermark6. State7.时间属性7.1 处理时间 processing time7.2 事件时间 Eve…...

PyTorch的torchvision内置数据集使用,transform+pytorch联合使用

一、PyTorch的torchvision内置数据集介绍 我们前面的文章里谈到的数据集是我们自己找的一些自定义数据集。那么在Pytorch中存在2种数据集(Dataset),即内置数据集(Built-in dataset)和自定义数据集(Custom d…...

MT1619 (A/B/C对应18W/22W/25W)如何避免温度高、电磁干扰

MT1619系列是一款开关电源芯片,其内部集成了一颗高集成度、高性能的电流模式 PWM 控制器和一颗功率 MOSFET。MT1619 具有恒功率功能,特别适用于 PD 充电器、电源适配器等中小功率的开关电源设备。极低的启动电流与工作电流、以及轻载或者无负载情况下的 …...

Hadoop 的基本 shell 命令

Hadoop 的基本 shell 命令主要用于与 Hadoop 分布式文件系统(HDFS)和 MapReduce 进行交互。以下是一些常用的 Hadoop shell 命令: 一、 HDFS 命令 1. 查看 HDFS 状态 hdfs dfsadmin -report: 显示 HDFS 的健康状态和容量信息。 2. 文件系统操…...

HCIP-交换实验

根据实验要求,完成实验内容: 实验拓扑图如下所示 : 搭建拓补图: LSW1,LSW2: [LS1]interface Eth-Trunk 0 [LS1-Eth-Trunk0]q [LS1]interface g0/0/3 [LS1-GigabitEthernet0/0/3]eth-trunk 0 [LS1]interf…...

Windows下线程的创建与使用(win32-API)

一、前言 线程是比进程更轻量级的执行单元,允许在一个进程中并发执行多个控制流。每一个线程都有自己的程序计数器、寄存器集和栈空间,但它们共享所属进程的全局数据和资源。这种共享内存模型使线程间的通信比进程间通信更为高效,同时也带来…...

华为OD机试(C卷,100分)- 游戏分组

题目描述 部门准备举办一场王者荣耀表演赛,有 10 名游戏爱好者参与,分为两队,每队 5 人。 每位参与者都有一个评分,代表着他的游戏水平。为了表演赛尽可能精彩,我们需要把 10 名参赛者分为示例尽量相近的两队。 一队的实力可以表示为这一队 5 名队员的评分总和。 现在给你…...

centos7.9系统按cloudpods

1. 简介: Cloudpods 是一款简单、可靠的企业IaaS资源管理软件。帮助未云化企业全面云化IDC物理资源,提升企业IT管理效率。 Cloudpods 帮助客户在一个地方管理所有云计算资源。统一管理异构IT基础设施资源,极大简化多云架构复杂度和难度&…...

android apk 加固后的地图加载异常及重新签名

1.首先根据需求将打包生成后的APK进行加固,可以使用360、阿里、腾讯加固等。 2.加固后的APK无法直接安装,需要重新进行签名。 3.首先找到sdk的位置,进入build-tools目录。 4.根据gradle文件选择版本目录。 5.将加固后的APK放至该目录下。在…...

手把手搭建私人在线备份系统

对于打工人来说,什么文件最重要? 那就是——打不开的文件最重要! 那么,如何才能避免这样的事情发生呢?这时候就需要使出我们的大杀器——文件备份! 文件备份怎么搞才最合适呢? 是使用移动硬盘&a…...

数据分析实操案例分享:如何对人事数据进行BI分析?

在数据驱动时代,数据分析已经成为企业和个人获取竞争优势的关键技能。特别是在人力资源管理领域,数据分析的应用正变得越来越重要。通过对在职和离职数据的深入分析,企业不仅能够洞察员工的动态,揭示员工流动的模式、预测人才需求…...

谷粒商城实战笔记-228-商城业务-认证服务-自定义SpringSession完成子域session共享

文章目录 一,228-商城业务-认证服务-自定义SpringSession完成子域session共享1. cookieSerializer()2. springSessionDefaultRedisSerializer() 一,228-商城业务-认证服务-自定义SpringSession完成子域session共享 前面弄清楚了分布式服务中的两个问题&…...

Elasticsearch核心

一、几个核心概念 1、节点:一个节点(Node)就是一个es进程,一个服务器可以部署多个节点 查询节点以及节点信息: http://127.0.0.1:9200/_cat/nodes?v 2、角色,是指节点在集群中担任什么角色&#xff1a…...

Python.NET:打开Python与.NET世界互通的大门

Python.NET 是一个强大的工具,它为 Python 程序员提供了一种与 .NET 公共语言运行时 (CLR) 无缝集成的途径。它就像一座桥梁,将 Python 的灵活性与 .NET 的强大功能连接起来,为开发者提供了前所未有的自由和可能性。 1. Python.NET 的核心价值…...

uniapp - plugins的组件配置使用

点击进入到uniapp中mp-weixin的配置中 点击进入小程序的plugin的配置 在项目中,我们可引用插件的使用,例如一些快递100,点餐插件的业务引入 添加插件 在使用插件前,首先要在小程序管理后台的“设置-第三方服务-插件管理”中添加…...

Microsoft Edge WebView2 截图

使用工具可以保存可见区域 CallDevToolsProtocolMethodAsync("Page.captureScreenshot", Params) always returns only visible part of html page including scrollbars. I tried all possible combinations of "fromSurface" and "captureBeyondVi…...

[word] 复杂文本如何仅全选word中的表格 (简单跟做即可)

问题描述 在word文档中,有各种形式的文本,有纯文本,有表格,有图片或者更多其它形式参杂在一起,本篇记录解决如何只全选中文档中的所有表格形式的部分,从而方便对表格进行批量修改和操作 环境说明 word版…...

Aop切面编程

学习视频 一、定义模型:订单保存模型,订单更新模型,业务层,日志模型 订单保存模型 /*** author durunwu* date 2024-08-20-21:04*/ Data public class SaveOrder {private Long id; }订单更新模型 /*** author durunwu* date …...

目标检测 | yolov9 原理和介绍

相关系列: 目标检测 | yolov1 原理和介绍 目标检测 | yolov2/yolo9000 原理和介绍 目标检测 | yolov3 原理和介绍 目标检测 | yolov4 原理和介绍 目标检测 | yolov5 原理和介绍 目标检测 | yolov6 原理和介绍 目标检测 | yolov7 原理和介绍 目标检测 | yolov8 原理和…...

如何在不格式化的情况下解锁Android智能手机密码

如果您忘记了密码,您的 Android 移动设备会将您锁定。发生这种情况时,通常可以通过执行恢复出厂设置来重新获得对设备的访问权限。可悲的是,这将导致所有数据的丢失。下面列出了在不丢失任何个人数据的情况下解锁锁定的Android 手机的有效方法…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

【2025年】解决Burpsuite抓不到https包的问题

环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...