最新要闻
- 天天最新:橄榄可以搭配葡萄酒吗?
- 全球快讯:安逸四川日历海报丨在广元利州月坝村:踏湖望星空
- 12306买卧铺票可以在线选铺了!操作指南出炉:很方便
- 全球快讯:夫妻节目里的反套路_夫妻节
- 阴阳师樱花妖技能什么意思(阴阳师樱花妖的夫君是谁) 观察
- 猪饲料品牌名字_猪饲料品牌-环球热议
- 博纳董事长于冬:剧集的崛起是对电影真正的冲击,不是拼特效的时代了
- 阔太王艳48岁重新复出,穿花裙跳舞秀曼妙曲线,彻底颠覆豪门形象 天天报道
- 还能算中国中型SUV标杆?丰田汉兰达月销已不足5000 隔壁理想已破万
- 当前短讯!CPU性能激增20%!苹果M2 Ultra处理器Geekbench 6跑分出炉
- 能否继续维持MPV霸主地位?全新丰田埃尔法现身国内 6月21日正式发布
- 全自动马桶水箱盖怎么打开(马桶水箱盖怎么打开)_今日最新
- 上海地铁9号线枫泾何时开通(上海地铁9号线)|每日热点
- 遵守公司规章制度总结怎么写(遵守公司规章制度总结)|世界独家
- 足字旁那个字怎么写(足字旁怎么打)
- 新加坡羽毛球公开赛:陈雨菲晋级女单半决赛
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
每日简讯:聊聊Flink的必知必会(一)
概述
Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。使用官网的语句来介绍, Flink 就是 “Stateful Computations over Data Streams”。
首先,Flink是一个纯流式的计算引擎,它的基本数据模型是数据流。流可以是无边界的无限流,即一般意义上的流处理。也可以是有边界的有限流,也就是批处理。因此 Flink 用一套架构同时支持了流处理和批处理。其次,Flink支持有状态的计算,稍微复杂一点的数据处理,比如说基本的聚合,数据流之间的关联都是有状态处理。
【资料图】
更直观的讲,对 Flink ⽽⾔,其所要处理的主要场景就是流数据,批数据只是流数据的⼀个极限特例⽽已,所以 Flink 是⼀款真正的流批统⼀的计算引擎。
无界数据无界数据是持续产生的数据,所以必须持续地处理无界数据流。数据是无限的,也就无法等待所有输入数据到达后处理,因为输入是无限的,没有终止的时间。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取,以便判断事件是否完整、有无遗漏。
有界数据有界数据,就是在一个确定的时间范围内的数据流,有开始有结束,一旦确定了就不会再改变。
Flink流程执行视图
Flink示例Demo可参考Flink对接KafKa消费分词统计Demo
数据流视图
Flink的程序一般可以分为三个部分:
///// Source//将kafka和zookeeper配置信息加载到Flink的执行环境当中StreamExecutionEnvironmentFlinkKafkaConsumer08 myConsumer = new FlinkKafkaConsumer08("test", new SimpleStringSchema(), properties);///// Transformation//添加数据源,此处选用数据流的方式,将KafKa中的数据转换成Flink的DataStream类型DataStream stream = env.addSource(myConsumer);//流计算,也是Flink的算子部分keyBy是通过key的形式进行分组,此处传入的0,表示是通过二元组的第一个元素也就是单词进行分组//LineSplitter是算子的具体逻辑DataStream> counts = stream.flatMap(new LineSplitter()) .keyBy(0) .sum(1);///// Sink//打印输出counts.print();
第1部分读取数据源(Source);可来自文本、kafka等第2部分对数据做转换操作(Transformation);其实就是函数式编程中一系列的API;大差不差,毕竟Flink本身就是基于函数式语言Scala编写面向函数式操作的。第3部分将转换结果输出到一个目的地(Sink);文本、其它存储。
在Transformation部分会有一系列相关的函数算子(Operator)参与对数据的计算,整个链路的逻辑视图可按如下表示:
既然有逻辑视图那就会有物理视图,物理视图对应的是分布式环境中具体的执行链路,可参考如下:
在分布式计算环境下,执行计算的单个节点(物理机或虚拟机)被称为实例,一个算子在并行执行时,算子子任务会分布到多个节点上,所以算子子任务又被称为算子实例(Instance)。即使输入数据增多,我们也可以通过部署更多的算子子任务来进行横向扩展。除去Sink外的算子都被分成了2个算子子任务,它们的并行度(Parallelism)为2,Sink算子的并行度为1。并行度是可以被设置的,当设置某个算子的并行度为2时,也就意味着这个算子有2个算子子任务(或者说2个算子实例)并行执行。实际应用中一般根据输入数据量的大小、计算资源的多少等多方面的因素来设置并行度。
算子的并行度设置:env.setParallelism(2);Sink算子的并行度设置成了1wordCount.print().setParallelism(1);
数据交换策略
图中出现了数据流动的现象,即数据在不同的算子子任务上进行数据交换。无论是Hadoop、Spark还是Flink,都会涉及数据交换策略。常见的数据交换策略有4种,如下所示。
前向传播(Forward)前一个算子子任务将数据直接传递给后一个算子子任务,数据不存在跨分区的交换,也避免了因数据交换产生的各类开销,图中Source和FlatMap之间就是这样的情形。
按Key分组(Key-Based)数据以(Key,Value)二元组形式存在,该策略将所有数据按照Key进行分组,相同Key的数据会被分到一组、发送到同一个分区上。WordCount程序中,keyBy()将单词作为Key,把相同单词都发送到同一分区,以方便后续算子的聚合统计。
广播(Broadcast)将某份数据发送到所有分区上,这种策略涉及了数据在全局的复制,因此非常消耗资源。
随机(Random)该策略将所有数据随机均匀地发送到多个分区上,以保证数据平均分配到不同分区上。该策略通常为了防止数据倾斜到某些分区,导致部分分区数据稀疏,另外一些分区数据拥堵的情况发生。
分布式架构与核心组件
为了支持分布式执行,Flink跟其他大数据框架一样,采用了主从(Master-Worker)架构。Flink执行时主要包括如下两个组件:
Master是一个Flink作业的主进程。它起到了协调管理的作用。
TaskManager,又被称为Worker或Slave,是执行计算任务的进程。它拥有CPU、内存等计算资源。Flink作业需要将计算任务分发到多个TaskManager上并行执行。
Flink支持多种部署模式,可以部署在单机(Local)、集群(Cluster),以及云(Cloud)上。
- Local模式:一般是单节点;
- Cluster模式:一般使用Cluster模式将Flink作业投入到生产环境中,生产环境可以是Standalone的独立集群,也可以是YARN或Kubernetes集群。
- Cloud模式:Flink也可以部署在各大云平台上,包括AWS、谷歌云和阿里云。
Standalone集群上只运行Flink作业。除了Flink,绝大多数企业的生产环境运行包括MapReduce、Spark等各种各样的计算任务,一般都会使用YARN或Kubernetes等方式对计算资源进行管理和调度。Flink目前已经支持了YARN、Mesos以及Kubernetes,开发者提交作业的方式变得越来越简单。
Flink作业提交
请先了解集群模式提交作业的流程Flink学习(一):SocketWindowWordCount示例
以Standalone集群部署为例,分析作业的提交过程。
如下所述:①用户编写应用程序代码,并通过Flink客户端(Client)提交作业。程序一般为Java或Scala语言,调用Flink API,构建逻辑视图。代码和相关配置文件被编译打包,被提交到Master的Dispatcher,形成一个应用作业(Application)。
②Dispatcher接收到这个作业,启动JobManager,这个JobManager会负责本次作业的各项协调工作。
③JobManager向ResourceManager申请本次作业所需资源。
④由于在一开始启动Master和TaskManager等进程,TaskManager已经向ResourceManager中注册了资源,这时闲置的TaskManager会被反馈给JobManager。
⑤JobManager将用户作业中的逻辑视图转化为如上所示的并行化的物理执行图,将计算任务分发部署到多个TaskManager上。至此,一个Flink作业就开始执行了。
TaskManager在执行计算任务过程中可能会与其他TaskManager交换数据,会使用一些数据交换策略。同时,TaskManager也会将一些任务状态信息反馈给JobManager,这些信息包括任务启动、执行或终止的状态,快照的元数据等。
Flink核心组件
Client
用户一般使用Client提交作业,比如Flink主目录下bin目录中提供的命令行工具。Client会对用户提交的Flink作业进行预处理,并把作业提交到Flink集群上。Client提交作业时需要配置一些必要的参数,比如使用Standalone集群还是YARN集群等。整个作业被打成了JAR包,DataStream API被转换成了JobGraph,JobGraph是一种类似如上所示的逻辑视图。
Dispatcher
Dispatcher可以接收多个作业,每接收一个作业,Dispatcher都会为这个作业分配一个JobManager。Dispatcher对外提供一个表述性状态转移(Representational State Transfer,REST)式的接口,以超文本传输协议(Hyper Text Transfer Protocal,HTTP)来对外提供服务。
JobManager
JobManager是单个Flink作业的协调者,一个作业会有一个JobManager来负责。JobManager会将Client提交的JobGraph转化为ExecutionGraph,ExecutionGraph是类似如上所示的并行的物理执行图。JobManager会向ResourceManager申请必要的资源,当获取足够的资源后,JobManager将ExecutionGraph以及具体的计算任务分发部署到多个TaskManager上。同时,JobManager还负责管理多个TaskManager,包括收集作业的状态信息、生成检查点、必要时进行故障恢复等。
ResourceManager
Flink现在可以部署在Standalone、YARN或Kubernetes等环境上,不同环境中对计算资源的管理模式略有不同,Flink使用一个名为ResourceManager的模块来统一处理资源分配上的问题。在Flink中,计算资源的基本单位是TaskManager上的任务槽位(Task Slot,简称Slot)。ResourceManager的职责主要是从YARN等资源提供方获取计算资源,当JobManager有计算需求时,将空闲的Slot分配给JobManager。当计算任务结束时,ResourceManager还会重新收回这些Slot。
TaskManager
TaskManager是实际负责执行计算的节点。一般地,一个Flink作业是分布在多个TaskManager上执行的,单个TaskManager上提供一定量的Slot。一个TaskManager启动后,相关Slot信息会被注册到ResourceManager中。当某个Flink作业提交后,ResourceManager会将空闲的Slot提供给JobManager。JobManager获取到空闲的Slot后会将具体的计算任务部署到空闲Slot之上,任务开始在这些Slot上执行。在执行过程,由于要进行数据交换,TaskManager还要和其他TaskManager进行必要的数据通信。总之,TaskManager负责具体计算任务的执行,启动时它会将Slot资源向ResourceManager注册。
任务执行与资源划分
任务执行
Flink采用主从架构,Master起着管理协调作用,TaskManager负责物理执行,在执行过程中会发生一些如数据交换、生命周期管理等事情。用户调用Flink API,构造逻辑视图,Flink会对逻辑视图优化,并转化为并行化的物理执行图,最后被执行的是物理执行图。
在构造物理执行图的过程中,Flink会将一些算子子任务链接在一起,组成算子链。链接后以任务(Task)的形式被TaskManager调度执行。使用算子链是一个非常有效的优化,它可以有效减少算子子任务之间的传输开销。链接之后形成的任务是TaskManager中的一个线程。
例如,数据从Source前向传播到FlatMap,这中间没有发生跨分区的数据交换,因此,我们完全可以将Source、FlatMap这两个子任务组合在一起,形成一个任务。数据经过keyBy()发生了数据交换,数据会跨越分区,因此无法将keyBy()以及其后面的窗口聚合、链接到一起。由于WindowAggregation的并行度为2、Sink的并行度为1,数据再次发生了交换,我们不能把WindowAggregation和Sink两部分链接到一起。
默认情况下,Flink会尽量将更多的子任务链接在一起,这样能减少一些不必要的数据传输开销。但一个子任务有超过一个输入或发生数据交换时,链接就无法建立。
Slot
TaskManager是一个JVM进程,在TaskManager中可以并行执行一到多个任务。每个任务是一个线程,需要TaskManager为其分配相应的资源,TaskManager使用Slot给任务分配资源。
一个TaskManager是一个进程,TaskManager可以管理一至多个任务,每个任务是一个线程,占用一个Slot。每个Slot的资源是整个TaskManager资源的子集,下图的TaskManager下有3个Slot,每个Slot占用TaskManager 1/3的内存,第一个Slot中的任务不会与第二个Slot中的任务互相争抢内存资源;即线程隔离。
Flink允许用户设置TaskManager中Slot的数目,这样用户就可以确定以怎样的粒度将任务做相互隔离。如果每个TaskManager只包含一个Slot,那么该Slot内的任务将独享JVM。如果TaskManager包含多个Slot,那么多个Slot内的任务可以共享JVM资源,比如共享TCP连接、心跳信息、部分数据结构等。官方建议将Slot数目设置为TaskManager下可用的CPU核心数,那么平均下来,每个Slot都能获得1个CPU核心。
针对Slot槽位的分配有多种方式,比如可以使用槽位共享等,进一步减少数据传输开销,充分利用计算资源。
开启槽位共享后,Flink允许多个任务共享一个Slot。如图所示,最左侧的数据流,一个作业从Source到Sink的所有子任务都可以放置在一个Slot中,这样数据交换成本更低。而且,对于一个数据流图来说,Source、FlatMap等算子的计算量相对不大,WindowAggregation算子的计算量比较大,计算量较大的算子子任务与计算量较小的算子子任务可以互补,空出更多的槽位,分配给更多任务,这样可以更好地利用资源。
总结
简单的介绍了从Flink的相关概念及关键架构及组件,对此有个基本的印象概念;强烈建议要先走一遍官方的demo,尤其是集群模式提交作业,才能有更立体更深入的了解。
Flink的官方SocketWindowWordCount单词计数demo体验
Flink 大数据初体验(hello world案例)
关键词:
每日简讯:聊聊Flink的必知必会(一)
天天最新:橄榄可以搭配葡萄酒吗?
全球快讯:安逸四川日历海报丨在广元利州月坝村:踏湖望星空
12306买卧铺票可以在线选铺了!操作指南出炉:很方便
全球快讯:夫妻节目里的反套路_夫妻节
阴阳师樱花妖技能什么意思(阴阳师樱花妖的夫君是谁) 观察
猪饲料品牌名字_猪饲料品牌-环球热议
博纳董事长于冬:剧集的崛起是对电影真正的冲击,不是拼特效的时代了
阔太王艳48岁重新复出,穿花裙跳舞秀曼妙曲线,彻底颠覆豪门形象 天天报道
还能算中国中型SUV标杆?丰田汉兰达月销已不足5000 隔壁理想已破万
当前短讯!CPU性能激增20%!苹果M2 Ultra处理器Geekbench 6跑分出炉
能否继续维持MPV霸主地位?全新丰田埃尔法现身国内 6月21日正式发布
全自动马桶水箱盖怎么打开(马桶水箱盖怎么打开)_今日最新
上海地铁9号线枫泾何时开通(上海地铁9号线)|每日热点
遵守公司规章制度总结怎么写(遵守公司规章制度总结)|世界独家
足字旁那个字怎么写(足字旁怎么打)
新加坡羽毛球公开赛:陈雨菲晋级女单半决赛
天天即时:《一张纸条》阅读答案(一张纸条阅读答案)
if little by little(if little)
老百姓的“柴米油盐”不易拍
魅族史上最美旗舰!魅族20 PRO 618特惠:极简“纽扣”三摄 每日快播
每日速讯:猛男必入 618新潮配色手机推荐:这颜值才对味
每日资讯:珠峰被救女子所雇登山公司深夜发声:救援费已支付 感谢救援
抽中检查就撤IPO的格林生物二闯创业板,拟再度扩充产能 热消息
王永利:人民币国际化应有序推进_世界快播报
环球热点评!Linux下六个有关file使用的实例
我国加大产销对接促脱贫地区帮扶产业高质量发展_当前热讯
我是大运火炬手丨丁宁:大运会既是赛场,更是世界青年的交流展示平台
余承东同款座驾!AITO问界M5智驾版下周交付 焦点热议
女记者体验Vision Pro后压红额头和鼻子 苹果史上最贵新品遇冷:已砍单95%|每日动态
高考生换机高峰来了!卢伟冰:Redmi K60、小米13真卖爆了 天天速读
打造“第三生活空间” 深蓝S7要爆红!
广汽总经理:为电池材料厂打长工不现实 我们车企他们永远得罪不起
古老沣河涌动新活力-环球实时
国内首条“丝路海运”电商快线开通首年进出口破100亿
q点是什么意思(q点)
善学者尽其理善行者究其难什么意思遇事三思而后行(善学者尽其理 善行者究其难什么意思)
高质量发展调研行 | 在智慧港口见证大湾区经济活力——广州南沙港走访一线见闻-全球热资讯
一位付费API工程师如何制造了推特今年第七次崩溃?
歌手李娜的丈夫照片(歌手李娜的丈夫) 天天快资讯
百万跑车变“火车”!杭州一法拉利458突然起火:车身烧出洞
天天滚动:诗词里的遗产:龙虎天下绝 千载玉棺探秘
赞美祖国大好河山的诗句_祖国大好河山的诗句
热点聚焦:宋代诗人陈与义有诗(宋代诗人陈与义乘船出游时)
房子贷款多久可以下来(房子首付付了贷款没下来可以退吗)
平安建设,你我同行—— 海湾旅游区开展2023年“平安建设宣传月”活动
莱商银行网上银行助手_莱商银行网上银行
护航高考|山东平安产险红马甲交上答卷 世界新要闻
全球今日讯!红烧牛腩的家常做法简单又好吃_红烧牛腩的家常做法
48个班!遂宁一公立学校今年9月投用|每日报道
八字偏强八字喜木是什么意思_八字偏强
蛇岛(九蛇岛)-全球快播报
环球热点评!滴滴招聘无车司机可靠吗(滴滴招聘无车司机)
男子被墙角的蛇跳出攻击 专家:夏季雨前、雨后要格外注意防蛇
“海底长城”!深中通道海底隧道历时5年成功合龙:2024年通车
哥伦比亚4名儿童坠机后丛林生存40天后获救:用树枝搭小棚 裹毯瘦到脱相
全球速看:国铁集团今起在12306网站(含App)试行在线选铺服务
丝瓜不宜与什么一起吃呢
视点!潈怎么读音_似的读音是什么
快资讯丨京津、京唐等多条城际列车调整扩容
这就是信心|优化营商环境 各地硬招、实招频出 环球快消息
老百姓的“柴米油盐”不易拍_全球快播
天天视点!运费险需要买吗_运费险是什么意思是不是不用掏运费
30多万买的奥迪官方二手车 车主卖车时发现重大事故车
环球滚动:古人考试作弊也疯狂!清朝“作弊衣”现身:老鼠须抄了4万多字
“两展一节”在京启动,北京茶业交易中心平台预计年底运行
未来6天,四大生肖财运达到最高峰,财运水涨船高,富贵无双
世界快播:王楠跪在地上指导女儿打球,鼓掌叫好,老公郭斌:这妈能打90分
excel中数字显示乱码 excel数字乱码如何恢复
莫扎特的一句话(关于莫扎特的话例如说他天真)
天天快讯:腾讯企鹅辅导电脑版(企鹅辅导电脑版)
【世界速看料】读改变未来的九大算法笔记09_指尖的精灵
全球微速讯:蔚来一季度营收106.8亿元,汽车毛利率仅为5.1%
【世界新要闻】诗词里的遗产:龙虎天下绝 千载玉棺探秘
带水的公司名称大全_全球百事通
突发!蔡英文与台空军通话,疑似"被解放军打断"!俄罗斯重大宣布:在此地部署核武器
世界快播:苹果Vision Pro头显国内要改名?华为4年前注册商标 遥遥领先
江苏考生最爱报哪个专业?去哪里上学?大数据分析报告来了!_热门
每日信息:高质量发展调研行 | 在智慧港口见证大湾区经济活力——广州南沙港走访一线见闻
藏海花南派三叔 百度网盘(藏海花南派三叔) 当前关注
白鹅潭万象城奠基开工 广州三大地标综合体两个已官宣
天天快资讯丨曼城挖角拜仁后防全能神将,7球1助攻堪称带刀后卫,6大豪门都想买他
知识落“地”助丰收 耕地质量提升示范田小麦增产53.6% 每日时讯
萧齐yan史_萧齐
天天消息!古曲100首经典_古曲
当前资讯!天津发布促进港产城高质量融合发展政策措施 多重维度推动港产城互联互补互促
【环球快播报】七八分熟的羊肉不宜吃的原因是?
徐州城下城遗址博物馆“上新”_全球快看
探访安徽巢湖“美容师” 义务守护巢湖水清岸绿
抗日战争的胜利 抗日战争胜利的标志
Mac Studio下周首销:M2 Ultra版最低也要3万多元
环球快播:女子收到六个核桃打开是二八个核桃:不仔细看发现不了
观焦点:2022国内发明专利:华为碾压式领先!5G必要专利全球第一、每年全球收费近百亿
天天看点:北京高考结束后考生翻跟头:现场家长纷纷称赞呐喊
高中生与大学生记者,曝光男子为找回80回后曹雪芹文笔,蜗居8平米23年
暗黑4威能不同位置的效果加成介绍
兰州市注册实名认证志愿者达68.8万人
台中女子全身瘀伤惨死,邪教4女信徒疑凌虐遭移送|天天观热点
高腰紧身牛仔裤,时髦又百搭,搭配黑色吊带,显得身姿曼妙|世界新资讯
爱情与灵药未删减高清在线观看下载中文_爱情与灵药未删减高清