Flink入门学习笔记

网友投稿 765 2022-05-30

本文为初入Flink的学习笔记,是在学习过程中对Flink基础知识的整理,具体学习内容包括尚硅谷Flink大数据从入门到精通、Flink官方文档以及[白话解析] Flink的Watermark机制等多个博客。

Flink是什么

Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速的计算

数据流

数据流是指数据像水流一样是连续不断的

有界数据流

有界数据流定义了流的开始,也定义了流的结束;

有界数据流可以在摄取了所有数据后再进行计算

有界数据流所有数据可以被排序,所以不需要有序摄取

有界流处理通常被称为批处理

无界数据流

无界数据流定义了流的开始,但没有定义流的结束

无界数据流会无休止地产生数据

无界数据流得到数据必须持续处理,即数据被摄取后需要立即处理,不能等到所有数据都到达再处理,因为无界数据流的输入是无限的,在任何时候都不会结束

处理无界数据流通常需要以特定的顺序摄取时间,例如事件的发生顺序,以便能过够推断结果的完整性

有状态的计算

有状态计算是指在程序计算过程中,在Flink内部会存储计算所产生的中间结果,并提供给后续计算使用

为什么需要使用Flink

因为在日常生活中的数据主要是流数据,例如用于交通运输业和环境等方面进行实时数据采集的传感器、银行中所进行的实时结算和实时异常检测行为。这些应用都需要对大量的实时数据进行及时的处理,希望具有低延时、高吞吐性。传统对于该数据的处理一般是批处理,即将一批数据收集完成后再进行处理,这样将会导致不能实时处理数据,会造成较高的延时,影响实际的使用。而Flink则是进行流处理,即每到来一个数据就进行处理,无需积攒一  批进行处理,因此它具有较高的实时性和高吞吐性,能够更好的满足日常的需求。

Flink组成

Flink主要是由JobManager、TaskManager、ResourceManager和Dispatcher组成

JobManager

JobManager是控制一个应用程序执行的主进程,也就是说每个应用程序都会被一个不同的JobManager所控制执行

TaskManager

TaskManager是Flink中的工作进程。在Flink中会有多个TaskManager运行,每个TaskManager都会有一定数量的插槽(Slot)

ResourceManager

ResourceManager主要负责管理TaskManager的插槽slot

Dispatcher

Dispatcher可以跨作业运行,为应用提供了REST接口,而且也提供了WebUI,用来方便展示和监控作业的执行信息

Flink的任务提交流程

当一个任务被提交时,Dispatcher就会启动,并将应用交给一个JobManager进行处理

JobManager接收到任务后,会向ResourceManager申请执行任务所需要的插槽(slot)资源

当ResourceManager接收到JobManager申请插槽资源后,会启动TaskManager

TaskManager会向ResourceManager注册自己空闲的slot,ResourceManager会根据JobManager所请求的slot数量,向TaskManager发送提供slot的指令

TaskManager与JobManager直接进行通信,向JobManager提供slot

JobManager向TaskManager分配要在slot中执行的任务

TaskManager和slot的关系

Flink中每一个TaskManager都是一个JVM进程,它可能会在独立的线程上执行一个或多个子任务。为了控制一个TaskManager能接收多个任 务,TaskManager通过slot来进行控制。Slot时TaskManager的最小资源分配单位,一个TaskManager中有多少个slot就意味着能支持多少的并发处理

时间语义

Event Time:事件创建的时间,即事件在现实世界中发生的时间,通常由事件中的时间戳描述

Ingestion Time:数据进入Flink的时间,即Flink读取数据源的时间

Processing Time:执行操作算子的本地系统时间,与机器相关,即数据流入到某个具体算子(消息被计算处理)时候相应的系统时间,也就是Flink处理该事件时当前系统时间

window类型

window用来将无界流切分成有界流,对于window在Flink中主要有以下两种,即时间窗口和计数窗口

时间窗口

Flink入门学习笔记

时间窗口顾名思义就是以时间来划分窗口,时间窗口又分为以下三种,即滚动时间窗口、滑动时间窗口和会话时间窗口

滚动时间窗口

滚动窗口将依据固定的窗口长度对数据进行切分,窗口长度固定,没有重叠。而且只有当前一个窗口结束,下面一个窗口才会开始,每个数据只会被划分到一个窗口中。例如:如果指定大小为5分钟的滚动窗口,则将执行当前窗口,并且每5分钟将启动一个新窗口

滑动时间窗口

滑动窗口是由固定的窗口长度和滑动间隔组成,窗口每次只会滑动固定的距离。窗口之间会有重叠,一个数据可能会存在于多个窗口中。例如:可以使用窗口大小为10分钟的窗口,滑动大小为5分钟,这样,每5分钟会生成一个窗口,包含最后10分钟到达的事件

会话窗口

会话窗口的窗口大小不固定,其窗口大小和数据相关,只要在一段时间内没有接收到新的数据,就会生成新的窗口

计数窗口

计数窗口与时间窗口类似,其与时间窗口的不同在于以数据的个数进行划分,而不是以时间划分,其主要分为滚动窗口和滑动窗口

EI企业智能 智能数据 数据湖探索 DLI

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:qt5 中文乱码解决
下一篇:GaussDB for DWS数据融合系列第七期:CDM导出数据
相关文章