【Flink】Flink核心概念简述

目录

  • 一、Flink 简介
  • 二、Flink 组件栈
    • 1. API & Libraries 层
    • 2. runtime层
    • 3. 物理部署层
  • 三、Flink 集群架构
  • 四、Flink基本编程模型
  • 五、Flink 的优点

一、Flink 简介

Apache Flink 的前身是柏林理工大学一个研究性项目, 在 2014 被 Apache 孵化器所接受,然后迅速地成为了Apache Software Foundation的顶级项目之一。2019 年 1 年,阿里巴巴收购了 Flink 的母公司 Data Artisans,并宣布开源内部的 Blink,Blink 是阿里巴巴基于 Flink 优化后的版本,增加了大量的新功能,并在性能和稳定性上进行了各种优化,经历过阿里内部多种复杂业务的挑战和检验。

Flink 是一个分布式的流处理框架,它能够对有界和无界的数据流进行高效的处理。

二、Flink 组件栈

Flink 采用分层的架构设计,从而保证各层在功能和职责上的清晰。如下图所示,由上而下分别是 API & Libraries 层、Runtime 核心层以及物理部署层:

在这里插入图片描述

1. API & Libraries 层

  • API层主要实现了面向无界Stream的流处理和面向Batch的批处理API,其中面向流处理对应DataStream API,面向批处理对应DataSet API
  • 在API层之上构建的满足特定应用的实现计算框架,也分别对应于面向流处理和面向批处理两类

这里的API可以进行更具体的划分
在这里插入图片描述
API 的一致性由下至上依次递增,接口的表现能力由下至上依次递减

  • SQL 和 Table API 同时适用于批处理和流处理,这意味着可以对有界数据流和无界数据流以相同的语义进行查询,并产生相同的结果。

  • DataStream 和 DataSet API 是 Flink 数据处理的核心 API,支持使用 Java 语言或 Scala 语言进行调用,提供了数据读取,数据转换和数据输出等一系列常用操作的封装。

  • Stateful Stream Processing 是最低级别的抽象,它通过 Process Function 函数内嵌到 DataStream API 中。 Process Function 是 Flink 提供的最底层 API,具有最大的灵活性,允许开发者对于时间和状态进行细粒度的控制。

2. runtime层

这一层是 Flink 分布式计算框架的核心实现层,包括作业转换,任务调度,资源分配,任务执行等功能,基于这一层的实现,可以在流式引擎下同时运行流处理程序和批处理程序。

3. 物理部署层

Flink 的物理部署层,用于支持在不同平台上部署运行 Flink 应用

Flink支持多种部署模式:本地、集群(Standalone/YARN)、云(GCE/EC2)

在这里插入图片描述

三、Flink 集群架构

Flink采用标准的 Master - Slave 结构, 其中,Master 部分包含了三个核心组件:Dispatcher、ResourceManager 和 JobManager,而 Slave 则主要是 TaskManager 进程。它们的功能分别如下:

  • JobManager: 负责所有需要中央协调的操作,比如说检查点(checkpoints) 的协调

    • 接收由 Dispatcher 传递过来的执行程序,该执行程序包含了作业图 (JobGraph),逻辑数据流图 (logical dataflow graph) 及其所有的 classes 文件以及第三方类库 (libraries) 等等 。
    • JobManagers 会将 JobGraph 转换为执行图 (ExecutionGraph)
    • 向 ResourceManager 申请资源来执行该任务,一旦申请到资源,就将执行图分发给对应的 TaskManagers 。因此每个作业 (Job) 至少有一个 JobManager;高可用部署下可以有多个 JobManagers,其中一个作为 leader,其余的则处于 standby 状态。
  • TaskManagers:负责实际的子任务 (subtasks) 的执行

    • 每个 TaskManagers 都拥有一定数量的 slots。Slot 是一组固定大小的资源的合集 (如计算能力,存储空间)
    • TaskManagers 启动后,会将其所拥有的 slots 注册到 ResourceManager 上,由 ResourceManager 进行统一管理
    • 在执行过程中,一个TaskManager可以跟其它运行同一应用程序的 TaskManager交换数据
  • ResourceManager :负责管理 slots 并协调集群资源

    • ResourceManager 接收来自 JobManager 的资源请求,并将存在空闲 slots 的 TaskManagers 分配给 JobManager 执行任务
    • Flink 基于不同的部署平台,如 YARN , Mesos,K8s 等提供了不同的资源管理器
    • 当 TaskManagers 没有足够的 slots 来执行任务时,它会向第三方平台发起会话来请求额外的资源。
  • Dispatcher

    • 负责接收客户端提交的执行程序,并传递给 JobManager
    • 提供了一个 WEB UI 界面,用于监控作业的执行情况
    • 在架构中可能并不是必需的,这取决于应用提交运行的方式。
      在这里插入图片描述
      Flink任务 on yarn
      在这里插入图片描述

四、Flink基本编程模型

所有的Flink程序都是由三部分组成的: Source 、Transformation 和 Sink

  • Source 负责读取数据源
  • Transformation 利用各种算子进行处理加工
  • Sink 负责输出

每一个dataflow以一个或多个sources开始以一个或多个sinks结束。dataflow 类似于任意的有向无环图(DAG)

下面是一个由Flink程序映射为Streaming Dataflow的示意图:

在这里插入图片描述
转化为并行的数据流时
在这里插入图片描述

五、Flink 的优点

  • Flink 是基于事件驱动 (Event-driven) 的应用,能够同时支持流处理和批处理
  • 基于内存的计算,能够保证高吞吐和低延迟,具有优越的性能表现
  • 支持精确一次 (Exactly-once) 语意,能够完美地保证一致性和正确性
  • 分层 API ,能够满足各个层次的开发需求
  • 支持高可用配置,支持保存点机制,能够提供安全性和稳定性上的保证
  • 多样化的部署方式,支持本地,远端,云端等多种部署方案
  • 具有横向扩展架构,能够按照用户的需求进行动态扩容
  • 活跃度极高的社区和完善的生态圈的支持

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

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

相关文章

Hive jar包冲突问题排查解决

1、报错情况 hiveserver2启动失败,查看日志报错: 2022-07-04T20:14:53,315 WARN [main]: server.HiveServer2 (HiveServer2.java:startHiveServer2(1100)) - Error starting HiveServer2 on attempt 1, will retry in 60000ms java.lang.NoSuchMethod…

『Charles数据抓包功攻略』| 如何使用Charles进行数据抓包与分析?

『Charles数据抓包功攻略』| 如何使用Charles进行数据抓包与分析? 1 Charles简介2 Charles主要功能3 Charles下载4 Charles安装5 Charles界面介绍6 不能抓取localhost数据的解决方法7 http抓包8 https抓包8.1 SSL证书导入8.2 SSL Proxying Setting设置 9 APP抓包9.1…

头歌—Hive的安装与配置

第1关&#xff1a;Hive的安装与配置 在修改 conf 下面的hive-site.xml文件这里&#xff0c;题目给的信息是错误的&#xff0c;正确的内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8" standalone"no"?> <?xml-stylesheet…

三星note3_lineageOS16刷SuperSu开启root权限

前面一篇文章写了note3刷lineageOS16,此处记录一下root过程。 Lineage OS rom在开发者选项中内置了root访问设置&#xff0c;您只需为adb和应用程序启用它&#xff0c;这非常简单。要启用root或root Lineage OS&#xff0c;请遵循以下步骤。 一、如何root 1.手机已刷入TWRP …

Redis高可用之Sentinel哨兵模式

一、背景与简介 Redis关于高可用与分布式有三个与之相关的运维部署模式。分别是主从复制master-slave模式、哨兵Sentinel模式以及集群Cluster模式。 这三者都有各自的优缺点以及所应对的场景、对应的业务使用量与公司体量。 1、主从master-slave模式 【介绍】 这种模式可以采用…

ssm土家风景文化管理平台源码和论文答辩PPT

摘要 土家风景文化管理平台是土家风景文化管理必不可少的一个部分。在风景文化管理的整个过程中&#xff0c;平台担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类土家风景文化管理平台也在不断改进。本课题所设计的土家风景文化管理平台&#xff0c;使用jav…

设计模式(2)

目录 一、工厂模式 1.1 工厂模式的定义 1.2 工厂模式的设计意图 1.3 工厂模式主要解决的问题 1.4 工厂模式的缺点 1.5 实际的应用案例 1. 数据库连接池 2. 图形用户界面&#xff08;GUI&#xff09;组件 3. 文件操作 二、各种工厂模式的变形 1.1 简单工厂模式&#…

FacetWP Relevanssi Integration相关性集成插件

点击阅读FacetWP Relevanssi Integration相关性集成插件原文 FacetWP Relevanssi Integration相关性集成插件是FacetWP与用于高级搜索的 Relevanssi 插件的集成显着增强了您网站的搜索功能。这个强大的工具使您的用户能够轻松找到他们寻求的特定内容&#xff0c;无论他们的查询…

MySQL:找回root密码

一、情景描述 我们在日常学习中&#xff0c;经常会忘记自己的虚拟机中MySQL的root密码。 这个时候&#xff0c;我们要想办法重置root密码&#xff0c;从而&#xff0c;解决root登陆问题。 二、解决办法 1、修改my.cnf配置文件并重启MySQL 通过修改配置文件&#xff0c;来跳…

Course2-Week2-神经网络的训练方法

Course2-Week2-神经网络的训练方法 文章目录 Course2-Week2-神经网络的训练方法1. 神经网络的编译和训练1.1 TensorFlow实现1.2 损失函数和代价函数的数学公式 2. 其他的激活函数2.1 Sigmoid激活函数的替代方案2.2 如何选择激活函数2.3 为什么需要激活函数 3. 多分类问题和Soft…

CSS实现小球边界碰撞回弹

如何通过CSS实现一个物体在屏幕中无限的边界碰撞回弹呢&#xff1f;我们可以使用动画效果实现 代码 我们只做一个小球&#xff0c;通过定位属性叠加动画的方式&#xff0c; 让小球在屏幕中进行运动&#xff0c;通过设置animation的alternate属性来设置回弹。最后&#xff0c;只…

智能优化算法应用:基于人工电场算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于人工电场算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于人工电场算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工电场算法4.实验参数设定5.算法结果6.参考…

golang实现函数yamlToStruct(infile,outFile)

问&#xff1a; golang实现函数yamlToStruct(infile,outFile),将yaml文件格式化成golang的结构体 gpt: 要实现一个将YAML文件格式化成Golang结构体的函数&#xff0c;你可以使用 yaml 和 reflect 包来处理。首先&#xff0c;你需要使用 yaml.Unmarshal 函数将YAML文件解析为一…

运维03:LAMP

黄金架构LAMP 什么是LAMP LAMP是公认的最常见&#xff0c;最古老的黄金web技术栈 快速部署LAMP架构 #停止nginx&#xff0c;并且把nginx应用卸载了 systemctl stop nginx yum remove nginx -y#关闭防火墙 iptables -F #清空防火墙规则&#xff0c;比如哪些请求允许进入服…

06 数仓平台MaxWell

Maxwell简介 Maxwell是由Zendesk公司开源&#xff0c;用 Java 编写的MySQL变更数据抓取软件&#xff0c;能实时监控 MySQL数据库的CRUD操作将变更数据以 json 格式发送给 Kafka等平台。 Maxwell输出数据格式 Maxwell 原理 Maxwell工作原理是实时读取MySQL数据库的二进制日志…

angular新版本未生成app.module.ts

https://angular.cn/tutorial/tour-of-heroes https://angular.cn/tutorial/tour-of-heroes/toh-pt0 ng new angular-tour-of-heroes cd angular-tour-of-heroes ng serve --open 查看目录&#xff0c;未生成app.module.ts 网上搜了一下 https://github.com/angular/angul…

【算法】蓝桥杯2013国C 横向打印二叉树 题解

文章目录 题目链接题目描述输入格式输出格式样例自己的样例输入自己的样例输出 思路整体思路存储二叉搜索树中序遍历并存储计算目标数的行号dfs遍历并写入数组初始化和处理输入输出初始化处理输入处理输出 完整的代码如下 结束语更新初始化的修改存储二叉搜索树的修改中序遍历和…

C语言实现梁友栋-Barsky算法

前言&#xff1a; &#xff08;引用梁友栋-Barsky裁剪算法_梁友栋 barsky算法-CSDN博客&#xff09; Cyrus和Beck用参数化方法提出了比Cohen-Sutherland更有效的算法。后来梁友栋和Barsky独立地提出了更快的参数化线段裁剪算法&#xff0c;也称为Liany-Barsky&#xff08;LB&…

oops-framework框架 之 音频管理(六)

引擎&#xff1a; CocosCreator 3.8.0 环境&#xff1a; Mac Gitee: oops-game-kit 注&#xff1a; 作者dgflash的oops-framework框架QQ群&#xff1a; 628575875 简介 在CocosCreator中&#xff0c;音频的播放主要通过组件: AudioSource 来管理音乐、音效的播放、暂停和停止…

【尚硅谷】第07章:随堂复习与企业真题(面向对象-进阶)

来源&#xff1a;尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备) 基本都是宋老师发的资料里面的内容&#xff0c;只不过补充几个资料里没直接给出答案的问题的答案。 不想安装markdown笔记的app所以干脆在这里发一遍。 第07章&#xff1a;随堂复习…