成都创新互联网站制作重庆分公司

Flink入门知识点有哪些

这篇文章主要讲解了“Flink入门知识点有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flink入门知识点有哪些”吧!

成都创新互联公司是专业的西和网站建设公司,西和接单;提供成都网站制作、成都网站建设,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行西和网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

什么是Flink?

在Flink的官网上,可以把官方文档语言设置为中文,于是我们可以看到官方是这样介绍的:

Flink入门知识点有哪些

基于官网的一句话介绍,我们就可以联想出很多东西

这篇文章可以带你简单认识一下Flink的一些基础概念,等你真正用到的时候就可以依据这篇文章来对Flink进行入门,现在Storm都被很多人给抛弃掉了,那么Flink优于Storm的地方有哪些呢?接下来我们一起来看看Flink吧。

什么是有边界和无边界?

Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。

官方其实也有介绍,但对初学者来说不太好理解,我来幼儿园化一下。

大家学到Flink了,消息队列肯定有用过吧?那你们是怎么用消息队列的呢?Producer生产数据,发给BrokerConsumer消费,完事。

在消费的时候,我们需要管什么Producer什么时候发消息吗?不需要吧。反正来一条,我就处理一条,没毛病吧。

这种没有做任何处理的消息,默认就是无边界的。

那有边界就很好理解了:无边界的基础上加上条件,那就是有边界的。加什么条件呢?比如我要加个时间:我要消费从8月8号到8月9号的数据,那就是有边界的。

Flink入门知识点有哪些

什么叫做有状态?

Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。

什么是有状态,什么是无状态?

无状态我们可以简单认为:每次的执行都不依赖上一次或上N次的执行结果,每次的执行都是独立的。

有状态我们可以简单认为:执行需要依赖上一次或上N次的执行结果,某次的执行需要依赖前面事件的处理结果。

Flink入门知识点有哪些

可以简单的认为:Flink本身就给我们提供了”存储“的功能,而我们每次执行是可以依赖Flink的”存储”的,所以它是有状态的。

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得继续计算一遍,程序继续往下走。

看文章有的同学可能会认为:精确一次性指的不是某一段代码只会执行一次,不会执行多次或不执行。这53这两个数,你不是重复计算了吗?怎么就精确一次了?

显然,代码只执行一次肯定是不可能的嘛。我们无法控制系统在哪一行代码挂掉的,你要是在挂的时候,当前方法还没执行完,你还是得重新执行该方法的。

所以,状态只持久化一次最终的存储介质中(本地数据库/HDFS),在Flink下就叫做exactly once(计算的数据可能会重复(无法避免),但状态在存储介质上只会存储一次)。

那么Flink是在多长时间存储一次的呢?这个是我们自己手动配置的。

Flink入门知识点有哪些

我们是做完了业务规则才将offset进行commit的,checkponit其实也是一样的(等拉下来该条数据所有的流程走完,才进行真正的checkponit)。

问题又来了,那checkpoint是怎么知道拉下来的数据已经走完了呢?Flink在流处理过程中插入了barrier,每个环节处理到barrier都会上报,等到sink都上报了barrier就说明这次checkpoint已经走完了。

Flink入门知识点有哪些

感谢各位的阅读,以上就是“Flink入门知识点有哪些”的内容了,经过本文的学习后,相信大家对Flink入门知识点有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


网页名称:Flink入门知识点有哪些
网站地址:http://cxhlcq.com/article/jcocjj.html

其他资讯

在线咨询

微信咨询

电话咨询

028-86922220(工作日)

18980820575(7×24)

提交需求

返回顶部