Flink入门教程.docx

上传人:lao****ou 文档编号:136821 上传时间:2023-04-10 格式:DOCX 页数:9 大小:257.32KB
下载 相关 举报
Flink入门教程.docx_第1页
第1页 / 共9页
Flink入门教程.docx_第2页
第2页 / 共9页
Flink入门教程.docx_第3页
第3页 / 共9页
Flink入门教程.docx_第4页
第4页 / 共9页
Flink入门教程.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Flink入门教程.docx》由会员分享,可在线阅读,更多相关《Flink入门教程.docx(9页珍藏版)》请在第一文库网上搜索。

1、Fl ink入门教程不得不说,Flink这两年是真的火Flink入门时一些可能看不太懂的点又或是看官方介绍看不太懂的点(API我就不细说了,多用用应该都能看懂)。什么是Flink?在Flink的官网上,可以把官方文档语言设置为中文,于是我们可以看到官方是这样介绍的:hpiinkApache Rink IMt么?Sffl运HWhat is SUUful Functions?应用场爆Fllnk用户下我文移,快取常助Rink博育flink-packags.org (S社区&项目信息开发计划妁何参与贯”Rink on GatHub (5EngltahttApacheFImk (gApache Flin

2、k 是什么?架构应用运维AwcbeHf*是一个梃饕町分花式处理引,用于荏无边界和背边尸数根以上进行。状等:的计1, %*能在所宿常见保环境中运行,并能以内存速度和任意政校进行计一.WT,筱们来介绍一下Rnk架构中的要方面.处理无界和有界数据任何类型的BU81B可以彭成一怜事件波信用卡交易、传息H3ML机B日志、网出诙移动应网程等上的用户交互记录,所有这至K霭都形成一和流.教枢可以赛作为无界或古药界究来处理.1无界流有定义31的开的,但没有定义观的结束.它们会无休止产生数抠,无界近的致握必友捋康处理,即致怒版密取后餐费立一处爬fPF”*既赛赛达科处因为人是无的.在任何时,人不会完版.处无界K1R

3、3I常9!求以特定版学18电事佐.积知件发生的序.以便瓶够推断纺果的完整性.2.有乃漳有定义流的开的,也有定义配的嬉我.。界潭可以在雁取所有数局后再遂行计.。界流所皆炉稔可以8博序,所以并不鳖厉序微取.有界篁处理通案被称为就处理 bcaiA(M iveem 一 tound , .1盯run而i所打,翻而 a i: trouMd stream ”:,心-wded,1 Apache Flink擅长处*无界和胃界数鹰集悄心的时何控与和状并化使得门小的运行时(ruMime)费够运行任何处理无界流的应用.可界流剥由一钙专力88室大小15%集精覆设计的算法对跳据空检讨行内8Mie.产生了出色的件胡通过探索

4、F:mk之上构建的用到柬加深理第.部署应用到任意地方Apache FW*K 个分布式黑皖.它篇!(计II资方来求行应用程库.Fbnk集成了所。零见的夏翼灵沿管/薪.例MHadecpYAAN、Apache Mesos 10 Kubemotee,但同时t3可以作为!9立集群运行.%*被设计为跳第很好堆工作在上述细个费*E理H中,这是通过费法管理修将定(foufce-manager.ae*ic)的部事模式实现的.Fir*可以采用与当前法源管理日招适改的方式送行交互.部司白破应用程序时.月,改会根挺应用桎序配置的并行性启动标识所需的资谡,并从贾延管理行谪求这些资源.在发生故口的情况T. FW*通过调求

5、新资JP*髯援发生故那的容HI. 点交我控制应用用停的所有遢信B是激过REST调用遂行的,达可以篇化Fink 5各龄环境中的筌成.上面的图我们每个字都能看得懂,但连起来就看不懂了。不管怎么样,我们可以了解到:Flink是一个分布式的计算处理引擎分布式:它的存储或者计算交由多台服务器上完成,最后汇总起来达到最终的效果。实时:处理速度是毫秒级或者秒级的计算:可以简单理解为对数据进行处理.,比如清洗数据(对数据进行规整,取出有用的数据)MySQLRedisHBaseKafka基于官网的一句话介绍,我们就可以联想出很多东西。这篇文章可以带你简单认识一下Flink的一些基础概念,等你真正用到的时候就可以

6、依据这篇文章来对Elink进行入门,现在Storm都被很多人给抛弃掉了,那么Flink优于Storm的地方有哪些呢?接下来我们一起来看看Fl ink吧。什么是有边界和无边界?Apache Fl ink是一个框架和分布式处理引擎,亮弋在无边界和有边界数据流上进行有状态的计算。官方其实也有介绍,但对初学者来说不太好理解,我来幼儿园化一卜,大家学到Flink 了,消息队列肯定有用过吧?那你们是怎么用消息队列的呢?Producer生产数据,发给Broker, Consumer消费,完事。在消费的时候,我们需要管什么Producer什么时候发消息吗?不需耍吧。反正来一条,我就处理一条,没毛病吧。这种没有

7、做任何处理的消息,默认就是无边界的。那有边界就很好理解了:无边界的基础卜.加上条件,那就是有边界的。加什么条件呢?比如我要加个时间:我要消费从8月8号至IJ8月9号的数据,那就是有边界的。有边界什么时候用无边界,什么时候用有边界?那也很好理解。我做数据清洗:来一条,我处理一条,这种无边界的就好了。我要做数据统计:每个小时的pv(page view)是多少,那我就设置1小时的边界,攒着一小时的数据来处理一次。在Flink在 设置“边界”这种操作叫做开窗口(Windows),窗口可简单分为两种类型:时间窗口(TimeWindows):按照时间窗口进行聚合,比如上面所讲得攥着一个小时的数据处理一次。

8、计数窗口数ountWindows):按照指定的条数来进行聚合,比如每来了 10条数据处理一次。看着就非常人性化(妈妈再也不用担心我需要聚合了).不仅如此,在Flink使用窗口聚合的时候,还考虑到了数据的准确性问题。比如说:现在我在11:06分产生了 5条数据,在11:07分 产生了 4条数据,我现在是按每分钟的维度来进行聚合计算。理论上来讲:Flink应该是在06分聚合了 5条数据,在07分聚合了 4条数据。但是,可能由于网络的延迟性等原因,导致06分的3条数据在07分时Flink才接收到。如果不做任何处理,那07分有可能处理了 7条条数据。某些需要准确结果的场景来说,这就不太合理了。所以Fl

9、ink可以给我们指定”时间语义“,不指定默认是数据到Fl ink的时间Processing Time来进行聚合处理,可以给我们指定聚合的时间以事件发生的时间Event Time来进行处理。事件发生的时间指的就是:日志真正记录的时间2020-11-22 00:00:02.552 INFOhttp-nio-7001-exec-28 c.m.t.rye-adn虽然指定了聚合的时间为事件发生的时间Event Time,但还是没解决数据乱序的问题(06分产生了 5条数据,实际上06分只收到了 3条,而剩下的两条在07分才收到,那此时怎么办呢?在06分时该不该聚合,07分收到的两条06分数据怎么办?)Fl

10、ink又可以给我们设置水位线(waterMarks) , Flink意思就是:存在网络延迟等情况导致数据接收不是有序,这种情况我都能理解。你这样吧,根据自身的情况,你可以设置一个延迟时间,等延迟的时间到了,我再聚合统一聚合。比如说:现在我知道数据有可能会延迟一分钟,那我将水位线waterMarks设置延迟一分钟。解读:因为设置了事件发生的时间Event Time,所以Fl ink可以检测到每一条记录发生的时间,而设置了水位线waterMarks设置延迟一分钟,等到Flink发现07分:59秒的数据来到了 Flink,那就确信06分的数据都来了(因为设置了 1分钟延迟),此时才聚合06分的窗口数

11、据。有边界指定以基痔条件来切翻数需时间窗口指定要只合的时间加席迸入Fhnk处理的对间(ProcessTEitnan什么叫做有状态?Apache Flink是一个框架和分布式处理引擎,亮于在无边界和有边界数据流上进行有状态的计算。什么是有状态,什么是无状态?无状态我们可以简单认为:每次的执行都不依赖上一次或上N次的执行结果,每次的执行都是独立的。有状态我们可以简单认为:执行需要依赖上一次或上N次的执行结果,某次的执行需要依赖前面事件的处理结果。比如,我们现在要统计文章的阅读PV(page view),现在只要有一个点击了文章,在Kafka就会有一条消息、。现在我要在流式处理平台上进行统计,那此时

12、是有状态的还是无状态的?假设我们要在Storm做,那我们可能将每次的处理结果放到一个“外部存储”中,然后基于这个“外部存储”进行计算(这里我们不用Storm Trident),那此时Storm是无状态的。比如说:我存储将每次得到的数据存储到Redis中,来一条数据,我就先查一下Redis目前的值是多少,跟Redis的值和现在的值做一次累加就完事了。假设要在Flink做,Flink本身就提供了这种功能给我们使川,我们可以依赖Flink的“存储”,将每次的处理结果交由Flink管理,执行计算的逻辑。可以简单的认为:Flink本身就给我们提供了存储”的功能,而我们每次执行是可以依赖Flink的“存储

13、”的,所以它是有状态的。那Flink是把这些有状态的数据存储在哪的呢?主要有三个地方:内存文件系统(HDFS)本地数据库如果假设Flink挂了,可能内存的数据没了,磁盘可能存储了部分的数据,那再重启的时候(比如消息队列会重新拉取),就不怕会丢了或多了数据吗?看到这里,你可能在会在别的地方看过Flink的另外一个比较出名的特性:精确一次性(简单来说就是:Flink遇到意外事件挂了以后,有什么机制来尽可能保证处理数据不重复和不丢失的呢)什么是精确一次性(exactly once) ?众所周知,流的语义性有三种:精确一次性(exactly once):有且只有一条,不多不少至少一次(at least

14、 once):最少会有一条,只多不少最多一次(at most once):最多只有一条,可能会没有Flink实现了精确一次性,这个精确一次性是什么意思呢?Flink的精确一次性指的是:状态只持久化一次到最终的存储介质中(本地数据库/HDFS.)以上面的图为例:Source数据流有以下数字21, 13,8,5,3,2, 1, 1,然后在Flink需要做累加操作(求和)现在处理完2, 1,1 了,所以累加的值是4,现在Flink把累积后的状态4已经存储起来了(认为前面2, 1, 1这几个数字已经完全处理过了)。程序一直往下走,处理了 5,3,现在累加的值是12,但现在Flink还没来得及把12存储到最终的介质,此时系统挂掉了。Flink重启后会重新把系统恢复到累加的值是4的状态,所以5, 3得继续计算一遍,程序继续往下走。看文章有的同学可能会认为:精确一次性指的不是某一段代码只会执行一次,不会执行多次或不执行。这5和3这两个数,你不是重复计算了吗?怎么就精确一次了?显然,代码只执行一次肯定是不可能的嘛。我们无法控制系统在哪一行代码挂掉的,你要是在挂的时候,当前方法还没执行完,你还是得重新执行该方法的

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 汇报材料

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服