Flink学习笔记(一)

news2024/12/23 12:54:59

流处理

批处理应用于有界数据流的处理,流处理则应用于无界数据流的处理。

有界数据流:输入数据有明确的开始和结束。

无界数据流:输入数据没有明确的开始和结束,或者说数据是无限的,数据通常会随着时间变化而更新。

在Flink中,应用程序由数据流组成,这些数据流可以经由用户自定义的算子进行转换。数据流最终形成有向图,这些图以一个或多个Source)开始,以一个或多个接收器Sink)结束。
在这里插入图片描述

通常来说,转换Transformation)与算子之间存在一对一的映射关系,但这并不是绝对的,一个转换也可以包含多个算子。

Flink可以处理来自数据流源(例如Kafka)的实时数据,同时也可以处理来自数据源的历史数据。

在这里插入图片描述

并行数据流

Flink中的程序本质上是并行和分布式的。在执行期间,流具有一个或多个流分区,每个算子都拥有一个或多个子任务。子任务之间彼此相互独立,在不同的线程、机器、或容器中执行。

子任务的数量就代表了该算子的并行度parallelism),同一程序的不同算子可能会具有不同的并行度。

在这里插入图片描述

两个算子之间可以通过一对一重新分发的方式传递数据。

  • 一对一:该模式会保留元素的分区和排序。上图中Source到map()的过程就属于一对一

  • 重新分发

    • 该模式会更改流的分区,上图中map()到keyBy()/window()的过程就属于重新分发

    • keyBy()-通过散列重新分区,broadcast()-广播,rebalance()-随即分发

及时流处理

对于大多数流应用程序来说,能够使用用于处理实时数据的相同代码重新处理历史数据,并无论如何都能产生确定性、一致性的结果,这是非常有价值的。

同等重要的是,注意事件发生的顺序,而不是交付处理的顺序,并能够推断一组事件何时(或应该)完成。

通过使用记录在数据流中的事件时间戳,而不是使用处理数据的机器的时钟,可以满足及时流处理的这些要求。

有状态流处理

Flink的操作是可以有状态的。这意味着如何处理一件事可能取决于之前所有事件的累积。

Flink 应用程序在分布式集群上并行运行。

有状态算子的并行实例集实际上是一个分片键值存储。每个并行实例负责处理一组特定键的事件,这些键的状态保存在本地。

下图显示了作业图中前三个算子以 2 的并行度运行的作业,最终由并行度为1的接收器结束。第三个算子是有状态的,第二个和第三个算子之间正在发生随机的网络连接。

在这里插入图片描述

状态始终在本地访问,这有助于 Flink 应用程序实现高吞吐量和低延迟。 你可以选择将状态保留在 JVM 堆上,如果状态开销太大,可以选择将其存储于高效率的磁盘中。

通过状态快照实现容错

Flink能够通过状态快照和流回溯的组合提供容错。这些快照将捕获分布式管道以及整个作业图的状态,将其记录在队列中,当发生故障时,进行回溯,恢复至最近的状态。快照的捕获是异步进行的,并不会影响正在处理的任务。

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

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

相关文章

python模块中的_all__属性的作用

文章目录 前言 一、python模块中的_all__属性的作用 总结 前言 python模块中的特殊变量_all__的用法总结。 一、python模块中的_all__属性的作用 顾名思义:我们如果导一个包里面的函数或者变量,会把暴露在外部的变量和函数导出。那么有些变量或者函…

如何做好小程序的运营,有哪些运营策略?

小程序用完即走的特性,使得小程序留存用户比较困难。任何一个产品的出现,绕不过推广运营这个话题,小程序也是一样。抓住用户,培养用户的忠诚度是所有产品的根本,我们该怎样从零开始运营好小程序? 一、人群…

免费批量ppt转pdf?一个方法教你完美转换

随着科技的不断发展,电子文档的使用越来越普遍。在商业、教育和个人领域,我们经常需要将PPT文件转换为PDF格式,以便更方便地共享和存档。幸运的是,现在有许多在线工具和软件可以帮助我们轻松地完成免费批量ppt转pdf。下面将介绍一…

LabVIEW开发设计热稳定器

LabVIEW开发设计热稳定器 使用与PC控制单元接口的电子设备进行数据采集和控制已广泛用于不同的工业应用。精确的温度控制是一个巨大的挑战,这就是为什么一些工业应用需要使用适当的材料和设备比更好的温度精度。 ​ 为了追踪[-50至250C]之间的温度变化&#xff0c…

【LeetCode】205. 同构字符串

205. 同构字符串(简单) 方法:哈希映射 思路 判断两个字符串是不是同构字符串,只需要判断对应的字符是不是存在映射关系,我们可以使用 map 来保存字符间的映射关系。由于 “不同字符不能映射到同一个字符上&#xff0…

babylonjs基于自定义网格生成围栏动画

效果: import { Vector3, Mesh, MeshBuilder, StandardMaterial, Texture, Animation, Color3 } from "babylonjs/core"; import imgUrl from "./image/headerwangge2.png" // 创建模型护栏特效 export default class CreateRail {constructor…

Flutter实战·第二版-第三章 基础组件笔记

第三章:基础组件 3.1文本及样式 3.1.1 Text Text("Hello world",textAlign: TextAlign.left, );Text("Hello world! Im Jack. "*4,maxLines: 1,overflow: TextOverflow.ellipsis, );Text("Hello world",textScaleFactor: 1.5, );3.1…

重塑DTC规则:元气森林的全渠道转型

元气森林作为迄今为止用5-6年时间最快达到70亿年销售额的饮料品牌(统一、可口可乐、东鹏特饮都花了15年左右,康师傅花了10年)。元气森林于2016年在北京创立,凭借健康产品理念和新潮营销方式,一款主打“0糖0卡0脂”概念…

javaScript:模板字符串让你忘记字符串拼接

目录 一.前言 二.模板字符串的使用 1.介绍 2.模板字符串 支持换行 模板字符串更适合元素写入 innerHTML模板字符串写法 3.模板字符串中,可以运行表达式 4.模板字符串中可以运行函数 三.总结 语法: 多行字符串: 变量插值: …

【嵌入式学习笔记】嵌入式入门8——SPI总线协议

1.SPI介绍 SPI:串行外设设备接口(Serial Peripheral Interface),是一种高速的,全双工,同步的通信总线。主要应用在存储芯片、AD转换器以及LCD中。 【注:IIC是电平协议,SPI是边沿协议…

WX1860- ngbe-1.2.5 xdp程序在路由模式下,使用iperf工具测试数据包不转发,用jmeter可以

本地验证时重定向iperf包有出现calltrace错误&#xff0c;经推断&#xff0c;系统PAGE_SIZE<8k时可能出现&#xff08;getconf PAGE_SIZE指令可查看&#xff09;&#xff0c;按下图将ngbe_main.c的2350行ngbe_rx_bufsz改为ngbe_rx_pg_size可修复。其次&#xff0c;需要将加载…

AE-卡通人物解说动画视频的制作

目录 1.导入卡通人物图片和音频文件 2.新建合成 3.在卡通人物图片上添加效果和表达式 4.在音频文件上添加效果和表达式 5.将卡通人物中的 CC Split2 中分割1 表达式链接到滑块中 6.卡通人物根据音频文件自动匹配口型。 AE制作卡通人物解说视频&#xff0c;卡通人物口型根据…

C++笔记之花括号和圆括号初始化区别,列表初始化和初始化列表区别

C笔记之花括号和圆括号初始化区别&#xff0c;列表初始化和初始化列表区别 code review! 文章目录 C笔记之花括号和圆括号初始化区别&#xff0c;列表初始化和初始化列表区别1.花括号{}进行初始化和圆括号()进行初始化2.列表初始化&#xff08;list initialization&#xff0…

idea插件推荐——mybatis log plugin快速查看运行SQL

我们在编写代码的时候一定会编写SQL&#xff0c;简单的SQL我们一般不会出错但是如果遇到了mybatis中的复杂动态SQL&#xff0c;我们可能就会出现一些问题&#xff0c;为了在开发自测阶段及时发现处理问题&#xff0c;我们需要快速查看编译得到的SQL&#xff0c; log4j 的打印的…

SpringBoot整合Druid、Mybatis、MybatisPlus以及MybatisPlus的使用

1.SpringBoot整合Druid 1&#xff09;引入jar包 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.3</version></dependency>2&#xff09;在application.yml中 …

C++新经典03--共用体、枚举类型与typedef

共用体 共用体&#xff0c;也叫联合&#xff0c;有时候需要把几种不同类型的变量存放到同一段内存单元&#xff0c;例如&#xff0c;把一个整型变量、一个字符型变量、一个字符数组放在同一个地址开始的内存单元中。这三个变量在内存中占的字节数不同&#xff0c;但它们都从同…

Java开源项目mall学习笔记(1)——项目初始化

一、学习声明与项目介绍 该笔记是记录学习开源项目mall过程的文档笔记&#xff0c;完全原创&#xff0c;转载请声明。同时也对开源项目的作者表示感谢&#xff01; mall: &#x1f525; mall项目是一套基于 SpringBoot Vue uni-app 实现的电商系统&#xff0c;包括前台商城项…

基于springboot+vue的武汉旅游网(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

快速搭建园林园艺商城小程序的五个关键步骤

园艺设计是现代人们爱好的一项活动&#xff0c;通过设计和布置花园&#xff0c;营造出美丽的自然景观&#xff0c;给人们带来舒适和愉悦的感觉。如今&#xff0c;随着科技的发展&#xff0c;园林园艺小程序商城成为了园艺爱好者们购物和交流的新平台。本文将为大家介绍一个简单…

Modbus_TCP协议如何使用?

1 驱动简介 网关支持标准的Modbus-TCP协议&#xff0c;支持Modbus-TCP协议的设备&#xff08;例如智能仪表、电表等&#xff09;&#xff0c;都可以通过此协议直接通讯&#xff0c;实现远程采集、监控、控制设备的功能。 从站号&#xff1a;默认为1&#xff0c;需要查看设备说…