当前位置: 首页 > 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 手机的有效方法…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

CSS | transition 和 transform的用处和区别

省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

离线语音识别方案分析

随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10pip3.10) 一:前言二:安装编译依赖二:安装Python3.10三:安装PIP3.10四:安装Paddlepaddle基础框架4.1…...

面试高频问题

文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...

MLP实战二:MLP 实现图像数字多分类

任务 实战(二):MLP 实现图像多分类 基于 mnist 数据集,建立 mlp 模型,实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入,可视化图形数字; 2、完成数据预处理:图像数据维度转换与…...

Axure Rp 11 安装、汉化、授权

Axure Rp 11 安装、汉化、授权 1、前言2、汉化2.1、汉化文件下载2.2、windows汉化流程2.3、 macOs汉化流程 3、授权 1、前言 Axure Rp 11官方下载链接:https://www.axure.com/downloadthanks 2、汉化 2.1、汉化文件下载 链接: https://pan.baidu.com/s/18Clf…...