论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
大数据
›
数据仓库与分析
›
Flink基本原理 + WebUI说明 + 常见标题分析
Flink基本原理 + WebUI说明 + 常见标题分析
十念
金牌会员
|
2025-1-12 12:40:50
|
显示全部楼层
|
阅读模式
楼主
主题
887
|
帖子
887
|
积分
2661
Flink 概述
Flink 是一个用于进行大规模数据处理的开源框架,它提供了一个流式的数据处理 API,支持多种编程语言和运行时环境。Flink 的核心优点包括:
低延迟
:Flink 可以在毫秒级的时间内处理数据,提供了低延迟的数据处理能力。
高吞吐
:吞吐量巨大。
分布式计算:Flink 支持分布式计算,它可以在大规模集群上运行,并提供了高可用和容错机制。
流式数据处理:Flink 基于流式数据处理模型,支持实时数据处理和数据增量更新。
事件驱动:Flink 的计算引擎是基于事件驱动的,它利用消息传递机制来处理数据。
Flink 的数据处理流程
Flink 的数据处理流程包括以下几个步骤:
数据输入:Flink 可以从各种数据源中读取数据,如 Kafka、HDFS 等。
数据转换:Flink 可以利用 DataStream API 或 SQL API 对数据进行转换和处理。
数据分区:Flink 可以根据数据的属性或规则对数据进行分区,以便在分布式集群上进行处理。
数据传输:Flink 可以利用网络传输机制将数据传输到其他节点或进程。
数据输出:Flink 可以将处理后的数据写入到各种数据存储中,如 Kafka、HDFS 等。
Flink架构解析
Flink 运行时由两种类型的进程构成:一个 JobManager 和一个大概多个 TaskManager。
JobManager
类似于司令官,分配工作给干活的士兵(TaskManager),听取士兵的报告,当士兵失败时做出规复等反应。
JobManager 具有很多与和谐 Flink 应用程序的分布式执行有关的职责:它决定何时调度下一个 task(或一组 task)、对完成的 task 或执行失败做出反应、和谐 checkpoint、而且和谐从失败中规复等等。这个进程由三个不同的组件构成:
ResourceManager
ResourceManager 负责 Flink 集群中的资源提供、回收、分配 - 它管理 task slots
,这是 Flink 集群中资源调度的基本单元。
Dispatcher
Dispatcher 提供了一个 REST 接口,用来提交 Flink 应用程序执行,并为每一个提交的作业启动一个新的 JobMaster。它还运行 Flink WebUI 用来提供作业执行信息。
JobMaster
1个JobMaster 负责管理1个JobGraph的执行
。Flink 集群中可以同时运行多个作业,每个作业都有本身的 JobMaster。
始终至少有一个 JobManager。高可用(HA)设置中可能有多个 JobManager,此中一个始终是 leader,其他的则是 standby(请参考 高可用(HA))。
TaskManager
TaskManager(也称为 worker):执行JobManager分配过来的任务,并向JobManager报告。taskManager之间也会交换数据
TaskManager中会有一到多个task slot, task slot是资源调度的最小单元, task slot 的数量表示并发处理task的数量。假设1个task有N个算子,那么执行这个task的slot 就会执行N个算子(直到结束)。
Client
Client 不是运行时和程序执行的一部分,而是用于准备数据流并将其发送给 JobManager。
Task和算子(Operator)
非分布式场景
假设程序目前必要依次颠末以下算子:source->map->keyBy->window->apply->Sink,如果每个算子都用1个线程执行的话,一共有多达6个线程,不但导致线程间切换、缓冲数据会有不小的开销,还低落了吞吐量。
为低落线程切换、缓冲的开销,Flink会把可以在同一个线程中执行的算子,链在一起,我们管他叫“算子链”
。如图有3个算子链:source+map是1个算子链,keyBy+window+apply是1个算子链,sink是一个。每个算子链会由1个Task来执行。
统计下数量:共有3个Task,会占用3个Task Slot执行。
线程数从6缩减成3个,低落了线程间切换、缓冲数据的开销。
把哪些算子“链”在一起,是可以设置的。
分布式场景
分布式场景下,工作会有多个taskManager共同完成工作。如图所示,当前并行度为2.
统计下数量:共有5个Task,每个Task会被分配到1个Task Slot上执行,以是会占用5个Slot。
以是Task Slot的数量,决定了可以并行执行多少个Task。
Task Slots 和资源
1个TaskManager下的task slots共享CPU资源,但内存会分开。
1个TaskManager都是一个 JVM 进程,这导致TaskManager下的slot会共享TCP连接和心跳信息。
Task Slot共享办理壅闭标题
继续上面的例子,1个Task被分配到1个Slot中:
如许会有1个标题:只有SourceMap拿到数据后,keyBy操作才华开始处理,这会导致keyBy所在算子有可能空闲。
为办理如许一个标题,Flink利用了Slot共享:slot被多个Task共享,如下图:
通过Slot共享
,将示例中的基本并行度从 2 个增长到 6 个,让每个Slot都可以执行Source算子,如许Source所在的Slot就
不会壅闭别的Slot了
。如允许以充分利用Slot的资源,同时确保繁重的Task们在 TaskManager 之间公中分配。
小总结:
1. Flink通过将多个算子链在一起,减少了线程之间的切换开销
2. 将任务分配到多个TaskManager上,进步了处理的速度
3. 末了通过Slot共享,确保Slot之间不会壅闭,充分让Slot忙碌起来。
WebUI界面+常见标题排查思绪
通过Web UI,可以看到TaskManager、Slot的数量用于速度调优,也可以检察日记用于标题排查。
Flink的Web UI界面的地址是http://localhost:8081,此中localhost是JobManager的主机地址,8081是JobManager的Web UI端标语。在欣赏器中输入这个地址,就可以访问Flink的Web UI界面了。
集群概览:
检察任务是否正常运行、资源是否必要扩容
点击1个Job检察Job详情:
点击1个算子检察算子详情:
检察数据倾斜、反压等性能标题
TaskManager:可以检察TaskManager的
日记排查标题
,留意蛋疼的是标题不一定出现在哪个TaskManager上。
JobManager:
Flink 的容错机制
Flink 的容错机制是通过 Checkpointing 实现的。Checkpointing 允许用户在处理流式数据时定期保存状态,以便在出现故障时规复状态。Flink 的容错机制包括以下几个步骤:
界说 Checkpointing 策略:用户必要界说 Checkpointing 的频率和保存状态的位置。
触发 Checkpointing:在处理数据时,Flink 会根据界说的 Checkpointing 策略触发 Checkpointing。
规复状态:在出现故障时,Flink 会根据保存的 Checkpointing 规复状态。
Flink 的应用场景
Flink 可以应用于多种场景,如:
实时数据处理:Flink 可以用于实时数据处理,如实时监控、实时分析等。
数据洗濯:Flink 可以用于数据洗濯,如数据去重、数据洗濯等。
数据分析:Flink 可以用于数据分析,如数据统计、数据挖掘等。
数据集成:Flink 可以用于数据集成,如数据同步、数据迁徙等。
Flink常见算子
Flink 的常见算子包括:
Source:从上游收集数据
Sink:发送数据给下游
Map:对输入数据进行转换操作,如数据洗濯、数据格式化等。
FlatMap:对输入数据进行扁平化操作,将一个数据项转换为多个数据项。
Filter:对输入数据进行筛选操作,只保留符合条件的数据项。
KeyBy:对输入数据进行分组操作,根据指定的键对数据进行分组。
Reduce:对输入数据进行聚合操作,将多个数据项聚合为一个数据项。
Window:对输入数据进行窗口操作,将数据按照指定的窗口大小进行分组。
Union:对多个输入数据进行合并操作,将多个数据集合并为一个数据集。
Split:对输入数据进行分裂操作,将一个数据集分裂为多个数据集。
Join:对多个输入数据进行连接操作,将多个数据集按照指定的键进行连接。
SQL:对输入数据进行 SQL 查询操作,利用 SQL 语句对数据进行查询和分析。
这些算子可以组合利用,以实现更复杂的数据处理逻辑。
总结
Flink 是一个用于进行大规模数据处理的开源框架,它提供了一个流式的数据处理 API,支持多种编程语言和运行时环境。Flink 的核心特点包括流式数据处理、事件驱动、分布式计算、低延迟等。Flink 的核心组件包括 DataStream API、SQL API、Stateful Stream Processing、Checkpointing 等。Flink 的数据处理流程包括数据输入、数据转换、数据分区、数据传输、数据输出等。Flink 的状态管理是通过 Stateful Stream Processing 实现的,它允许用户在处理流式数据时维护状态。Flink 的容错机制是通过 Checkpointing 实现的,它允许用户在处理流式数据时定期保存状态,以便在出现故障时规复状态。Flink 可以应用于多种场景,如实时数据处理、数据洗濯、数据分析、数据集成等。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
十念
金牌会员
这个人很懒什么都没写!
楼主热帖
Velero系列文章(四):使用Velero进行 ...
Kali Linux利用MSF入侵安卓手机(小白版 ...
微光互联 TX800-U 扫码器无法输出中文 ...
【图书管理系统】Servlet+JSP+MySql 实 ...
SonarQube安全扫描
三天吃透Kafka面试八股文
xmrig挖矿样本分析 miner
C/C++函数的调用约定详解
Android Studio 实现登录注册-源代码 ...
kubernetes之Endpoint引入外部资源实践 ...
标签云
存储
挺好的
服务器
浏览过的版块
Oracle
快速回复
返回顶部
返回列表