Flink随笔 20241203 Flink重点内容

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.mzph.cn/bicheng/63135.shtml

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

相关文章

Linux-异步IO和存储映射IO

异步IO 在 I/O 多路复用中,进程通过系统调用 select()或 poll()来主动查询文件描述符上是否可以执行 I/O 操作。而在异步 I/O 中,当文件描述符上可以执行 I/O 操作时,进程可以请求内核为自己发送一个信号。之后进程就可以执行任何其它的任务…

docker更换容器存储位置

一:原因 今天之前在某个服务器上使用docker搭建的服务突然无法访问了,进入服务器查看发现服务运行正常,但是就是无法使用,然后我这边准备将docker服务重新启动下看看,发现docker服务无法重启,提示内存已满…

工业—使用Flink处理Kafka中的数据_ProduceRecord2

使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入HBase 中的 gyflinkresult:Produce5minAgg 表, rowkey“

什么是TCP的三次握手

TCP(传输控制协议)的三次握手是一个用于在两个网络通信的计算机之间建立连接的过程。这个过程确保了双方都有能力接收和发送数据,并且初始化双方的序列号。以下是三次握手的详细步骤: 第一次握手(SYN)&…

外卖开发(二)开发笔记——DTO、自定义全局异常处理、ThreadLocal、日期格式化

外卖开发(二)开发笔记 一、DTO二、自定义全局异常处理三、ThreadLocal存入、提取当前登陆用户的id四、日期格式化1、实体类属性上加入注解JsonFormat2、在WebMvcConfiguration中扩展SpringMVC的消息转换器 一、DTO 数据传输对象(DTO&#xf…

Java 中tableaw 实战教程

java中tableaw库通过简单的API实现过滤、连接、绘制和操作表格数据。支持CSV,数据库,Excel等数据源。 安装依赖 tableaw是用于分析表格数据的开源Java库,构建在Java 8流之上。它可以从GitHub下载,也可以作为Maven或Gradle项目的…

jvm-46-jvm Thread Dump 线程的信息获取+可视分析化工具 FastThread

拓展阅读 JVM FULL GC 生产问题 I-多线程通用实现 JVM FULL GC 生产问题 II-如何定位内存泄露? 线程通用实现 JVM FULL GC 生产问题 III-多线程执行队列的封装实现,进一步抽象 jvm-44-jvm 内存性能分析工具 Eclipse Memory Analyzer Tool (MAT) / 内…

手机上怎么拍证件照,操作简单且尺寸颜色标准的方法

在数字化时代,手机已成为我们日常生活中不可或缺的一部分。它不仅是通讯工具,更是我们拍摄证件照的便捷利器。然而,目前证件照制作工具鱼龙混杂,很多打着免费名号的拍照软件背后却存在着泄漏用户信息、照片制作不规范导致无法使用…

PHP使用RabbitMQ(正常连接与开启SSL验证后的连接)

代码中包含了PHP在一般情况下使用方法和RabbitMQ开启了SSL验证后的使用方法(我这边消费队列是使用接口请求的方式,每次只从中取出一条) 安装amqp扩展 PHP使用RabbitMQ前,需要安装amqp扩展,之前文章中介绍了Windows环…

【Go 基础】channel

Go 基础 channel 什么是channel,为什么它可以做到线程安全 Go 的设计思想就是:不要通过共享内存来通信,而是通过通信来共享内存。 前者就是传统的加锁,后者就是 channel。也即,channel 的主要目的就是在多任务间传递…

系统监控——分布式链路追踪系统

摘要 本文深入探讨了分布式链路追踪系统的必要性与实施细节。随着软件架构的复杂化,传统的日志分析方法已不足以应对问题定位的需求。文章首先解释了链路追踪的基本概念,如Trace和Span,并讨论了其基本原理。接着,文章介绍了SkyWa…

【查询目录】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

dell电脑开不了机怎么回事?戴尔电脑无法开机解决方法

dell戴尔电脑开不了机,这是很多使用dell电脑用户常遇到的问题。这种故障情况是由多种原因引起,包括硬件故障、软件问题或电源问题等等。dell电脑开不了机怎么办呢?下面便为大家介绍一下相关解决修复方法,帮助用户解决戴尔电脑无法…

ansible自动化运维(二)ad-hoc模式

目录 Ansible模块(ad-hoc模式) 1.command模块:远程执行命令 2.shell 模块:远程执行命令,支持管道,重定向 3.Raw模块:先登录,再执行,最后退出 4.Script模块&#xff…

深入解析级联操作与SQL完整性约束异常的解决方法

目录 前言1. 外键约束与级联操作概述1.1 什么是外键约束1.2 级联操作的实际应用场景 2. 错误分析:SQLIntegrityConstraintViolationException2.1 错误场景描述2.2 触发错误的根本原因 3. 解决方法及优化建议3.1 数据库级别的解决方案3.2 应用层的解决方案 4. 友好提…

windows平台使用C#创建系统服务

使用 C# 在 Windows 平台创建和管理系统服务 在 Windows 平台上,系统服务(Windows Service)是一种运行在后台、无需用户交互的应用程序。系统服务广泛应用于长期任务处理、网络监听、后台调度等场景。本文将详细介绍如何使用 C# 创建一个 Win…

Spring Cloud Alibaba 之 “Sentinel”

从网上下载好sentinel-dashboard-1.6.3.jar,然后执行 java -jar sentinel-dashboard-1.6.3.jar,执行成功之后在浏览器输入localhost:8080,Sentinel的登录名和密码都是sentinel,登陆成功之后看到只有一个首页。 接下来开始整合Spring Cloud Alibaba Sen…

web移动端、pc端获取浏览器指纹-fingerprintjs插件(类似mac地址)

主要还是使用fingerprintjs插件 安装 npm install fingerprintjs/fingerprintjs引入(这里封装成公共js) import FingerprintJS from fingerprintjs/fingerprintjs;/*** 获取用户的浏览器指纹* returns visitorId 这是一个唯一标识符,可以被…

把用tab/空格 分割表示的文本转为json 脚本

比如如下文本: Timestamp : Sat Nov 16 18:28:46 2024 Driver Version : 560.35.03 CUDA Version : 12.560.35.03 Attached GPUs : 3 N/A …

常见Linux命令(详解)

文章目录 常见Linux命令文件目录类命令pwd 打印当前目录的绝对路径ls 列出目录内容cd 切换路径mkdir 建立目录rmdir 删除目录touch 创建空文件cp 复制文件或目录rm 移除文件或者目录mv 移动文件与目录或重命名cat 查看文件内容more 文件分屏查看器less 分屏显示文件内容head 显…