Flink入门知识点有哪些
这篇文章主要讲解了“Flink入门知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flink入门知识点有哪些”吧!
成都创新互联公司是专业的西和网站建设公司,西和接单;提供成都网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行西和网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!
什么是Flink?
在Flink的官网上,可以把官方文档语言设置为中文,于是我们可以看到官方是这样介绍的:
基于官网的一句话介绍,我们就可以联想出很多东西。
这篇文章可以带你简单认识一下Flink的一些基础概念,等你真正用到的时候就可以依据这篇文章来对Flink进行入门,现在Storm都被很多人给抛弃掉了,那么Flink优于Storm的地方有哪些呢?接下来我们一起来看看Flink吧。
什么是有边界和无边界?
Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。
官方其实也有介绍,但对初学者来说不太好理解,我来幼儿园化一下。
大家学到Flink了,消息队列肯定有用过吧?那你们是怎么用消息队列的呢?Producer
生产数据,发给Broker
,Consumer
消费,完事。
在消费的时候,我们需要管什么Producer什么时候发消息吗?不需要吧。反正来一条,我就处理一条,没毛病吧。
这种没有做任何处理的消息,默认就是无边界的。
那有边界就很好理解了:无边界的基础上加上条件,那就是有边界的。加什么条件呢?比如我要加个时间:我要消费从8月8号到8月9号的数据,那就是有边界的。
什么叫做有状态?
Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。
什么是有状态,什么是无状态?
无状态我们可以简单认为:每次的执行都不依赖上一次或上N次的执行结果,每次的执行都是独立的。
有状态我们可以简单认为:执行需要依赖上一次或上N次的执行结果,某次的执行需要依赖前面事件的处理结果。
可以简单的认为:Flink本身就给我们提供了”存储“的功能,而我们每次执行是可以依赖Flink的”存储”的,所以它是有状态的。
以上面的图为例: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
这两个数,你不是重复计算了吗?怎么就精确一次了?
显然,代码只执行一次肯定是不可能的嘛。我们无法控制系统在哪一行代码挂掉的,你要是在挂的时候,当前方法还没执行完,你还是得重新执行该方法的。
所以,状态只持久化一次到最终的存储介质中(本地数据库/HDFS),在Flink下就叫做exactly once
(计算的数据可能会重复(无法避免),但状态在存储介质上只会存储一次)。
那么Flink
是在多长时间存储一次的呢?这个是我们自己手动配置的。
我们是做完了业务规则才将offset
进行commit
的,checkponit
其实也是一样的(等拉下来该条数据所有的流程走完,才进行真正的checkponit
)。
问题又来了,那checkpoint
是怎么知道拉下来的数据已经走完了呢?Flink
在流处理过程中插入了barrier
,每个环节处理到barrier
都会上报,等到sink
都上报了barrier
就说明这次checkpoint
已经走完了。
感谢各位的阅读,以上就是“Flink入门知识点有哪些”的内容了,经过本文的学习后,相信大家对Flink入门知识点有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
网页标题:Flink入门知识点有哪些
浏览路径:http://pwwzsj.com/article/jcocjj.html