Flink随笔 20241203 Flink重点内容

news2024/12/26 19:52:49

Flink 是一个强大的流处理框架,它的设计理念是高吞吐量、低延迟的流式计算。你提到的这些重点是 Flink 的核心组成部分,下面我将详细解析每一个方面。

1. 窗口(Window)

窗口是 Flink 流处理中一个非常重要的概念,主要用于处理无限流数据。窗口将无限数据流分割成有限大小的数据块,进行计算和处理。Flink 提供了多种类型的窗口:

  • 时间窗口(Time Window)

    • 滚动窗口(Tumbling Window):窗口的大小是固定的,且无重叠。数据会被固定的时间切割成块,每个块独立处理。
    • 滑动窗口(Sliding Window):窗口大小固定,但窗口滑动步长可配置,可以有重叠。每次窗口滑动时,窗口的内容会重新计算。
    • 会话窗口(Session Window):窗口大小不是固定的,而是根据事件之间的空闲时间(session gap)来动态调整。当一段时间内没有新数据到来时,当前会话窗口关闭,开启新的窗口。
  • 基于计数的窗口(Count-based Window):窗口大小由元素数量决定,而不是时间。

2. 算子(Operator)

算子是 Flink 流处理中的基本操作单元。Flink 提供了多种算子,常见的有:

  • Map算子:对流中的每个元素应用一个函数,产生一个新的输出流。
  • FlatMap算子:类似于Map算子,但它允许返回零个、一个或多个结果。
  • Filter算子:用于根据条件过滤流中的元素。
  • KeyBy算子:按照某个字段对流进行分组,相同键的数据会被路由到同一个处理任务中。
  • Reduce算子:对流中的数据进行聚合操作,可以是求和、计数、最小值、最大值等。
  • Window算子:用于将数据流分割为窗口进行计算(如上面所述)。
  • Join算子:支持基于某些键的流间连接,Flink 支持流与流、流与静态数据、静态数据与流的连接。
  • Sink算子:将计算结果输出到外部系统,如数据库、消息队列、文件系统等。

3. Checkpoint

Checkpoint 是 Flink 提供的一种容错机制,用于确保流处理作业在发生故障时能够恢复到一致的状态。Flink 通过周期性地将操作的状态保存到持久化存储中实现。

  • 启动Checkpoint:Flink 会定期启动Checkpoint,保存当前任务的状态。
  • 容错机制:当作业发生故障时,Flink 会从最近的成功的Checkpoint恢复任务状态,保证数据的一致性和处理的正确性。
  • 配置
    • state.backend:指定状态后端,常用的有 rocksdbmemory
    • checkpoint.interval:Checkpoint 的时间间隔,单位是毫秒。
    • checkpoint.timeout:Checkpoint 超时时间。
    • state.savepoints.dir:用于存储 savepoint 的目录。
    • checkpointing.mode:有两种模式,EXACTLY_ONCE(精确一次)和 AT_LEAST_ONCE(至少一次)。
    • checkpointing.externalized:决定是否在作业停止时保留外部保存点。

4. 资源管理

Flink 的资源管理包括 JobManager 和 TaskManager 的管理,它们负责 Flink 集群的资源调度与分配。

  • JobManager:是 Flink 的控制中心,负责管理作业的生命周期,调度作业,处理作业的失败恢复等。每个作业只有一个 JobManager。

    • 任务提交、作业调度和故障恢复等都是 JobManager 的职责。
    • JobManager 配置
      • jobmanager.rpc.address:指定 JobManager 的主机地址。
      • jobmanager.rpc.port:指定 JobManager 的 RPC 端口。
      • jobmanager.heap.size:指定 JobManager 的堆内存大小。
      • jobmanager.execution.failover-strategy:指定作业失败恢复策略。
  • TaskManager:是 Flink 的计算单元,负责执行任务并处理数据。TaskManager 是作业的实际执行者。

    • TaskManager 中的每个 Task 是一个并行任务,负责处理 Flink 作业中的一个子任务。
    • TaskManager 配置
      • taskmanager.memory.process.size:指定 TaskManager 分配给任务的内存大小。
      • taskmanager.numberOfTaskSlots:指定 TaskManager 上可用的任务槽数(并行度)。
      • taskmanager.rpc.port:TaskManager 的 RPC 端口。
      • taskmanager.network.memory.fraction:指定用于网络缓冲的内存比例。

5. JobManager 与 TaskManager 相关配置

Flink 的资源管理与作业执行的能力依赖于 JobManager 和 TaskManager 的配置。通常在 Flink 集群模式下,资源管理是由 YARN、Kubernetes 或 Flink 自带的 standalone 模式来完成的。

  • Standalone 模式:在这种模式下,Flink 提供了 JobManager 和 TaskManager 的独立配置,通常部署在不同的节点上。
  • YARN 模式:Flink 可以运行在 YARN 上,YARN 管理作业的资源分配,Flink 的资源管理由 YARN 负责。
  • Kubernetes 模式:Flink 也可以运行在 Kubernetes 上,Kubernetes 提供了资源调度与管理。

6. Flink 集群模式

Flink 支持多种集群部署模式:

  • Standalone模式:Flink 运行在独立集群上,JobManager 和 TaskManager 通常分别部署。
  • YARN模式:Flink 可以在 Hadoop YARN 集群上运行,利用 YARN 的资源管理能力。
  • Kubernetes模式:Flink 可以部署在 Kubernetes 上,利用 Kubernetes 的资源管理能力。

配置总结

  • TaskManager 和 JobManager 的内存和并行度配置

    • 通过 taskmanager.memory.process.sizetaskmanager.numberOfTaskSlots 来配置 TaskManager 的内存和任务槽数。
    • jobmanager.heap.sizejobmanager.rpc.address 配置 JobManager 的内存大小和主机地址。
  • JobManager 的调度策略

    • 通过 jobmanager.execution.failover-strategy 来配置作业失败后的恢复策略(如自动重启)。
  • Checkpoint 配置

    • 通过 checkpoint.interval 来配置Checkpoint的周期,state.backend 来指定状态后端。

通过对这些配置的合理调整,Flink 可以根据不同的业务需求提供高效、容错、可扩展的流式计算服务。希望这些解析能帮助你更好地理解 Flink 的核心概念。

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

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

相关文章

【ArkTS】使用AVRecorder录制音频 --内附录音机开发详细代码

系列文章目录 【ArkTS】关于ForEach的第三个参数键值 【ArkTS】“一篇带你读懂ForEach和LazyForEach” 【小白拓展】 【ArkTS】“一篇带你掌握TaskPool与Worker两种多线程并发方案” 【ArkTS】 一篇带你掌握“语音转文字技术” --内附详细代码 【ArkTS】技能提高–“用户授权”…

一种多功能调试工具设计方案开源

一种多功能调试工具设计方案开源 设计初衷设计方案具体实现HUB芯片采用沁恒微CH339W。TF卡功能网口功能SPI功能IIC功能JTAG功能下行USB接口 安路FPGA烧录器功能Xilinx FPGA烧录器功能Jlink OB功能串口功能RS232串口RS485和RS422串口自适应接口 CAN功能烧录器功能 目前进度后续计…

浏览器的事件循环机制

浏览器和Node的事件循环机制 引言浏览器的事件循环机制 引言 由于JS是单线程的脚本语言,所以在同一时间只能做一件事情,当遇到多个任务时,我们不可能一直等待任务完成,这会造成巨大的资源浪费。为了协调时间,用户交互…

Zabbix添加防火墙温度监控值实战

我们在Zabbix监控系统会监控诸如Server、network device、application等实例,通常我们在监控某个具体产品时,我们会找到具体的监控模板,在设备添加到平台以后,将模板链接到该设备,但很多时候我们企业内部的设备是没有标…

【k8s】创建基于sa的token的kubeconfig

需求 创建一个基于sa的token的kubeconfig文件,并用这个文件来访问集群。 具体创建sa 和sa的token请参考文章: 【k8s】给ServiceAccount 创建关联的 Secrets-CSDN博客 创建sa apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata:namespace: jtkjdevnam…

Fastapi + vue3 自动化测试平台---移动端App自动化篇

概述 好久写文章了,专注于新框架,新UI界面的实践,废话不多说,开搞 技术架构 后端: Fastapi Airtest multiprocessing 前端: 基于 Vue3、Vite、TypeScript、Pinia、Pinia持久化插件、Unocss 和 Elemen…

Apache Doris 现行版本 Docker-Compose 运行教程

特别注意!Doris On Docker 部署方式仅限于开发环境或者功能测试环境,不建议生产环境部署! 如有生产环境或性能测试集群部署诉求,请使用裸机/虚机部署或K8S Operator部署方案! 原文阅读:Apache Doris 现行版…

Docker的彻底删除与重新安装(ubuntu22.04)

Docker的彻底删除与重新安装(ubuntu22.04) 一、首先我们彻底删除Docker1、删除docker及安装时自动安装的所有包2、删除无用的相关的配置文件3、删除相关插件4、删除docker的相关配置和目录 二、重新安装1、添加 Docker 的官方 GPG 密钥:2、将…

Nginx学习-安装以及基本的使用

一、背景 Nginx是一个很强大的高性能Web和反向代理服务,也是一种轻量级的Web服务器,可以作为独立的服务器部署网站,应用非常广泛,特别是现在前后端分离的情况下。而在开发过程中,我们常常需要在window系统下使用Nginx…

力扣hot100道【贪心算法后续解题方法心得】(三)

力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划?关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…

系统--线程互斥

1、相关背景知识 临界资源多线程、多执行流共享的资源,就叫做临界资源临界区每个线程内部,访问临界资源的代码互斥在任何时刻,保证有且只有一个执行流进入临界区,访问临界资源,对临界资源起到保护作用原子性不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么…

Qt桌面应用开发 第十天(综合项目二 翻金币)

目录 1.主场景搭建 1.1重载绘制事件,绘制背景图和标题图片 1.2设置窗口标题,大小,图片 1.3退出按钮对应关闭窗口,连接信号 2.开始按钮创建 2.1封装MyPushButton类 2.2加载按钮上的图片 3.开始按钮跳跃效果 3.1按钮向上跳…

getchar()

getchar():从计算机终端(一般是键盘)输入一个字符 1、getchar返回的是字符的ASCII码值(整数)。 2、getchar在读取结束或者失败的时候,会返回EOF 输入密码并确认: scanf读取\n之前的内容即12345678 回车符…

linux 获取公网流量 tcpdump + python + C++

前言 需求为,统计linux上得上下行公网流量,常规得命令如iftop 、sar、ifstat、nload等只能获取流量得大小,不能区分公私网,所以需要通过抓取网络包并排除私网段才能拿到公网流量。下面提供了一些有效得解决思路,提供了…

Node.js:开发和生产之间的区别

Node.js 中的开发和生产没有区别,即,你无需应用任何特定设置即可使 Node.js 在生产配置中工作。但是,npm 注册表中的一些库会识别使用 NODE_ENV 变量并将其默认为 development 设置。始终在设置了 NODE_ENVproduction 的情况下运行 Node.js。…

KAN-Transfomer——基于新型神经网络KAN的时间序列预测

1.数据集介绍 ETT(电变压器温度):由两个小时级数据集(ETTh)和两个 15 分钟级数据集(ETTm)组成。它们中的每一个都包含 2016 年 7 月至 2018 年 7 月的七种石油和电力变压器的负载特征。 traffic(交通) :描…

中安证件OCR识别技术助力鸿蒙生态:智能化证件识别新体验

在数字化和智能化的浪潮中,伴随国产化战略的深入推进,国产操作系统和软件生态的建设逐渐走向成熟。鸿蒙操作系统(HarmonyOS Next)作为华为推出的重要操作系统,凭借其开放、灵活和高效的特点,正在加速在多个…

Java设计模式之状态模式架构高扩展的订单状态管理

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

【排序用法】.NET开源 ORM 框架 SqlSugar 系列

💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

家政小程序开发,打造便捷家政生活小程序

目前,随着社会人就老龄化和生活压力的加重,家政服务市场的需求正在不断上升,家政市场的规模也正在逐渐扩大,发展前景可观。 在市场快速发展的影响下,越来越多的企业开始进入到市场中,同时家政市场布局也发…