美文网首页
Flink简介

Flink简介

作者: 安申 | 来源:发表于2020-06-11 00:37 被阅读0次

    1.初识Flink

            Flink起源于Stratosphere项目,Stratosphere是在2010~2014年由3所地处柏林的大学和欧洲的一些其他的大学共同进行的研究项目,2014年4月Stratosphere的代码被复制并捐赠给了Apache软件基金会,参加这个孵化项目的初始成员是Stratosphere系统的核心开发人员,2014年12月,Flink一跃成为Apache软件基金会的顶级项目。

    2.Flink概念

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

    3.Flink Logo

    左:Apache 右:Flink

            上图为Apache和Flink的Logo图,从颜色上不难看出它们之间的亲密程度;相比之下Spark可能要疏远一些,仅仅是拥有了Apache的姓。

    4.Flink重要特点

    (1)事件驱动型(Event-driven)

            事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。比较典型的就是以kafka为代表的消息队列几乎都是事件驱动型应用。

            一个事件驱动系统典型地由事件消费者和事件产生者组成。事件消费者向事件管理器订阅事件,事件产生者向事件管理器发布事件。当事件管理器从事件产生者那接收到一个事件时,事件管理把这个事件转送给相应的事件消费者。如果这个事件消费者是不可用的,事件管理者将保留这个事件,一段间隔之后再次转送该事件消费者。这种事件传送方法在基于消息的系统里就是:储存(store)和转送(forward)。

    Event-Driver

    (2)流与批的世界观

    批处理的特点是有界、持久、大量,非常适合需要访问全套记录才能完成的计算工作,一般用于离线统计。

    流处理的特点是无界、实时,  无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作,一般用于实时统计。

    在spark的世界观中,一切都是由批次组成的,离线数据是一个大批次,而实时数据是由一个一个无限的小批次组成的。

    而在flink的世界观中,一切都是由流组成的,离线数据是有界限的流,实时数据是一个没有界限的流,这就是所谓的有界流和无界流。

    无界数据流:无界数据流有一个开始但是没有结束,它们不会在生成时终止并提供数据,必须连续处理无界流,也就是说必须在获取后立即处理event。对于无界数据流我们无法等待所有数据都到达,因为输入是无界的,并且在任何时间点都不会完成。处理无界数据通常要求以特定顺序(例如事件发生的顺序)获取event,以便能够推断结果完整性。

    有界数据流:有界数据流有明确定义的开始和结束,可以在执行任何计算之前通过获取所有数据来处理有界流,处理有界流不需要有序获取,因为可以始终对有界数据集进行排序,有界流的处理也称为批处理。

    有界流和无界流

    如上图所示:

    1.无界流表示有头无尾的数据流,知道何时开始,但不知道何时结束

    2.有界流表示有头有尾的数据流,一个已知的固定大小

    3.由图可知,可以将无界流中的一段视为有界流,故无界流有界流只是相对的概念

    相关文章

      网友评论

          本文标题:Flink简介

          本文链接:https://www.haomeiwen.com/subject/vstvtktx.html