Flink系列之Flink流式计算引擎基础理论
创始人
2024-03-06 00:43:56
0

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


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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...