Flink系列之Flink流式计算引擎基础理论

news2024/11/25 7:05:14

声明:
        文章中代码及相关语句为自己根据相应理解编写,文章中出现的相关图片为自己实践中的截图和相关技术对应的图片,若有相关异议,请联系删除。感谢。转载请注明出处,感谢。


By luoyepiaoxue2014

B站:https://space.bilibili.com/1523287361 点击打开链接
微博地址: https://weibo.com/luoyepiaoxue2014 点击打开链接



title: Flink系列


一、Flink流式计算引擎基础理论

1.1 官网解读

官网解释: https://flink.apache.org/

Apache Flink® — Stateful Computations over Data Streams

在这里插入图片描述

看详细介绍:

优势细节官网链接
所有流式场景1、数据驱动的应用
2、批流数据分析
3、数据通道和ETL
https://flink.apache.org/zh/usecases.html
正确性保证1、Exactly-once状态一致性保证
2、事件时间处理
3、复杂的late date处理
https://flink.apache.org/zh/flink-applications.html#building-blocks-for-streaming-applications
分层 APISQL on Stream & Batch Data
DataStream API & DataSet API
ProcessFunction (Time & State)
https://flink.apache.org/zh/flink-applications.html#layered-apis
聚焦运维灵活部署
高可用
保存点
https://flink.apache.org/zh/flink-operations.html
大规模计算水平扩展架构
支持超大状态
增量检查点机制
https://flink.apache.org/zh/flink-architecture.html#run-applications-at-any-scale
性能卓越低延迟
高吞吐
内存计算
https://flink.apache.org/zh/flink-architecture.html#leverage-in-memory-performance

英文版本:

在这里插入图片描述

中文版本:

在这里插入图片描述

Flink 各种特性介绍:https://flink.apache.org/
What is Apache Flink?:https://flink.apache.org/flink-architecture.html
Flink 应用场景:https://flink.apache.org/usecases.html
Flink 应用企业:https://flink.apache.org/poweredby.html
Flink 版本升级迭代:https://flink.apache.org/downloads.html
Flink Quick Start:https://nightlies.apache.org/flink/flink-docs-release-1.14//docs/try-flink/local_installation/
Flink 架构:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/concepts/flink-architecture/
Flink 核心概念:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/concepts/glossary/
Flink 流式应用程序开发相关:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/dev/datastream/overview/
Flink Checkpoint:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/ops/state/checkpoints/
Flink State 和 StateBackend:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/ops/state/state_backends/
Flink 部署:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/deployment/overview/

要点01:Flink 处理无界数据流:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/learn-flink/overview/#stream-processing
要点02:Flink 关于并行数据流的处理方案:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/learn-flink/overview/#parallel-dataflows
要点03:Flink 的有状态计算和状态管理:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/learn-flink/overview/#stateful-stream-processing
要点04:Flink Operator 和 Task:https://nightlies.apache.org/flink/flink-docs-release-1.14/fig/levels_of_abstraction.svg
要点05:Flink 资源管理 和 Solot:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/concepts/flink-architecture/#task-slots-and-resources
要点06:Flink 应用程序运行模式:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/concepts/flink-architecture/#flink-application-execution

Flink 设计目的和初衷:

无界数据流:无界数据流有一个开始但是没有结束,它们不会在生成时终止并提供数据,必须连续处理无界流,也就是说必须在获取后立即处理event。对于无界数据流我们无法等待所有数据都到达,因为输入是无界的,并且在任何时间点都不会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取event,以便能够推断结果完整性,无界流的处理称为流处理。

无界流有一个开始,但没有定义的结束。它们不会在生成数据时终止并提供数据。必须连续处理无边界流,即,事件在被摄入后必须立即处理。等待所有输入数据到达是不可能的,因为输入是无界的,并且不会在任何时间点完成。处理无界数据通常需要以特定的顺序接收事件,例如事件发生的顺序,以便能够推断出结果的完整性。

一种不断增长的,本质上无限的数据集。这些通常被称为“流数据”。然而,当应用于数据集时,术语流或批量是有问题的,这种数据往往意味着使用某种类型的执行引擎来处理这些数据集。两种类型的数据集之间的关键区别在于现实中它们的有限性,因此最好用表示这种区别的术语来表述它们。因此,我将无限的“流”数据集称为无限数据,有限的“批处理”数据集作为有限数据。

有界数据流和无界数据流的区别:

在这里插入图片描述

一种持续的数据处理模式,适用于无限数据流。低延迟,近似和/或推测结果通常与流式引擎联系在一起。事实上,批处理系统传统上没有实现低延迟或推测性的结果。

从这里开始,任何时候使用术语“流”,意思都是设计用于无限数据集的执行引擎。当没有附加任何其他术语时,将明确表示无限数据,无限数据处理或低延迟/近似/推测结果。这些是在Google Dataflow中采用的术语。

最终总结:

离线和实时应该指的是:数据处理的延迟;
批量和流式指的是:数据处理的方式。

批处理的特点是有界、持久、大量,批处理非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。

流处理的特点是无界、实时,流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。

1.2 Flink 架构设计实现和应用模块分工

Flink 整体架构设计实现:https://nightlies.apache.org/flink/flink-docs-release-1.14/docs/concepts/flink-architecture/

架构图:

在这里插入图片描述

RestClient(ActorSystem RPC 通信 HTTP 的提交 App) +

StreamGraph(一个算子/一个Operator 就是这个 DataFlow 中的一个顶点 流图 原始图) +

JobGraph (提交到服务集群中的数据结构抽象对象,在 StreamGraph 基础之上做了优化:把满足一定条件的相邻 Operator 合并成一个 OperatorChain)

JobManager( ResourceManager 管理和调度资源 + WebMonitorEndpoint 接收 客户端 rest 请求 + Dispatcher 做任务分发 )

  • JobGraph(当 Dispatcher 去给这个Job 启动一个 JobMaster 的时候,会让 JobMaster(类似于 YARN 中的 AM 角色) 把这个 JobGraph 转换成 ExecutionGraph
  • ExecutionGraph: 并行化(Operator 根据并行度运行成多个 Task)) + ExecutionGraph

TaskManager: Memory、NetWork 、IO Manager ActorSystem, TaskSlotTable

关于 ResourceManager 的解释:

1、YARN 中的 主节点

2、Flink 的 JobManager / Standalone 集群的主节点 的一个内部组件: 资源管理

主节点:逻辑概念: JobManager
Standalone: 主节点:物理概念: StandaloneSessionClusterEntrypoint
YARN Session Cluster: 主节点: YARNSessionClusterEntrypoint

Flink API 设计:https://nightlies.apache.org/flink/flink-docs-release-1.14/fig/levels_of_abstraction.svg

在这里插入图片描述

Flink 整体架构体系:API 和 Libaries 体系

在这里插入图片描述

阿里的 Flink 流式平台负责人: 阿里云栖大会的时候,在 Flink-1.13 的完全支持 流批一体的 API

批处理:Spark
流处理:Flink

很多公司,自己实现!搞一个平台,封装这两个东西

Spark =》 SparkSession :SparkContext + SQLContext + HiveContext

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

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

相关文章

[附源码]计算机毕业设计JAVA线上图书销售管理系统

[附源码]计算机毕业设计JAVA线上图书销售管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM my…

电脑卡怎么办?4招帮你解决电脑卡顿的烦恼!

你是不是也遇到过这样的情况:电脑突然卡顿,玩游戏也是卡的不行。首先我们先了解一下电脑卡顿的原理。造成这种现象的原因主要是由于 CPU、显卡等硬件性能老化或者损坏。电脑卡顿对我们来说真的非常痛苦,严重影响了工作和学习效率,…

【使用 BERT 的问答系统】第 3 章 :词嵌入介绍

🔎大家好,我是Sonhhxg_柒,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 📝个人主页-Sonhhxg_柒的博客_CSDN博客 📃 🎁欢迎各位→点赞…

计算机毕业设计-微信小程序文学小说阅读销售系统

项目介绍 制作小说阅读管理系统提供读者的交流平台,让作者可以通过这个方式让跟多的人看到自己的作品,能跟快的让读者看到自己的创作以及读者对自己的一些评论、意见,能够及时的明白读者的想法来调节自己创作思路。也能为读者节省很多买书的…

遗传算法(GA)优化的BP神经网络预测,GA-BP回归预测,多输入单输出模型。

clc; clear all; close all warning off tic %% 导入数据 % 训练集——190个样本 P_train xlsread(data,training set,B2:G191); T_train xlsread(data,training set,H2:H191); % 测试集——44个样本 P_testxlsread(data,test set,B2:G45); T_testxlsr…

[附源码]计算机毕业设计springboot美发店会员管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SpringBoot日志文件

文章目录日志有什么作用?SpringBoot 的日志日志级别日志级别的分类自定义日志在程序中得到日志对象使用日志对象打印日志日志级别设置日志持久化更简单的日志输出—lombok日志有什么作用? 日志是程序的重要组成部分,想象⼀下,如果…

Android 导航之Navigation 组件的介绍与使用

1、介绍: 在以前的应用中,针对多导航模块的使用,常见的有tabhost或者FragmentTabHost,但是这些在使用的过程中,非常臃肿,包括加载和管理也不如人意。在AndroidX中,官方引入Navigation模块&#…

【信管2.4】项目运行环境与项目经理

项目运行环境与项目经理加餐加餐来了哦,今天的内容在 《信息系统项目管理师教程》 这本教材里是没有的,而且在 PMBOK 第五版中也是没有的。这部分内容是 PMBOK 第六版中新加的两个独立章节,不过内容不多,非常轻松,重点…

AGV移动机器人无人叉车控制器设计

AGV控制器是为移动机器人(AMR、智能叉车等)设计的通用控制器,为移动机器人提供地图构建、定位导航、模型编辑等核心功能。 本方案将移动机器人的核心组件集成于一体,配合功能强大的客户端软件 ,可帮助用户快速实现机器…

【数据结构】Java实现数据结构的前置知识,时间复杂度空间复杂度,泛型类的讲解

文章目录数据结构时间复杂度、空间复杂度包装类、装箱与拆箱泛型擦除机制数据结构 当我们在成为一名程序员的这条道路上努力的时候,我们一定经常听到这个词数据结构。那么究竟什么是数据结构呢?数据结构顾名思义,就是数据结构,数…

[附源码]计算机毕业设计JAVA校园快递管理系统

[附源码]计算机毕业设计JAVA校园快递管理系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybati…

vtkjs中Sample Distance功能

通过 SetSampleDistance () 来设置每条射线的采样步长,默认值为1,单位为世界坐标系单位,数值越小越精细 通过 SetImageSampleDistance () 来设置图像采样距离,默认值为1,即投射光线的间隔数值越小越精细 核心代码如下…

【OpenCV-Python】教程:3-10 直方图(2)直方图均衡

OpenCV Python 直方图均衡化 【目标】 理解直方图均衡化提升图像的对比度 Histogram Equalization ??? 将图像的直方图拉均衡一些,分散一些;可以提升对比度。 【代码】 通过上面的图像可以看出,高亮度区域较少,需要分散该图像…

Java HashMap 的扩容因子为什么是 0.75

所谓的加载因子,也叫扩容因子或者负载因子,它是用来进行扩容判断的。 假设加载因子是0.5,HashMap初始化容量是16,当HashMap中有16 * 0.58个元素时,HashMap就会进行扩容操作。 而HashMap中加载因子为0.75,…

pandas 100题

文章目录1.将下面字典创建为DataFrame2.提取含有字符串“python”的行3.输出df所有列名4.修改第列名5.统计grame列中每种编程语言出现的次数6 将空值用上下值的平均值填充7 列值大于3的数8 去重列9 计算列平均值10 将列转换列表11 保存到excel12 查询行列13 列值大于3小月7的值…

【Spring】编程式事务的应用场景理解

前言 我们经常在使用Spring全家桶开发JavaEE项目的时候,一想到事务就会习惯性的使用声明式注解Transactional,由Spring框架帮你做AOP实现事务的回滚,但是声明式事务恰恰比较方便,所以有些场景下并不好用,接下来我来举一个例子&am…

服务器下载mmdetection

1.申请账号密码 找实验室有root权限的同学创建一个账号密码 2.命令行中敲:ssh服务器账号,然后输入自己的服务器密码(确认自己是否处于校园网环境,如果不在的话记得连vpn) 3.命令行敲cd /切换到根目录然后ls查看服务…

通过SCADA实现KPI分析和预测性维护远比想象中简单

一、前言 随着工业发展的不断进步,越来越多的企业开始注重KPI分析和预测性维护。通过数据分析实现智能制造已经成为不可缺少的环节。制定并分析关键绩效指标(KPI)是实现数据分析战略的重要一步,因为只有跟踪这些关键绩效指标才能…

题目1444:蓝桥杯201 4年第五届真题斐波那契

这篇文章是帮一个叫做【废柴成长中】的孩子写的。 题目&#xff1a; 这里难点应该就是在【输入为一行用空格分开的整数n m p(0<n,m&#xff0c;p<10^18)】 &#xff0c;这里一下子就把最大值干成long的最大范围了&#xff0c;很明显&#xff0c;long肯定也不行。 解析其…