Apache Flink

目录

处理无边界和有边界数据

数据可以作为无边界流或有边界流处理

随时随地部署应用程序

以任何规模运行应用程序

利用内存性能


        Apache Flink 起源于一个叫作 Stratosphere 的项目,它是由 3 所地处柏林的大学和欧洲其他一些大学共同进行的研究项目,由柏林工业大学的教授沃克尔·马尔科(Volker Markl)领衔开发。2014年 4 月,Stratosphere 的代码被复制并捐赠给了 Apache 软件基金会,Flink 就是在此基础上被重新设计出来的。

        

        Apache Flink是一个框架和分布式处理引擎,用于在无界和有界数据流上进行有状态计算。Flink被设计为在所有常见的集群环境中运行,以内存速度和任何规模执行计算。

Apache Flink: Stateful Computations over Data Streams

Apache Flink_第1张图片​​​​​​​​​​​​​​

⚫  2014 年 8 月,Flink 第一个版本 0.6 正式发布(至于 0.5 之前的版本,那就是在Stratosphere 名下的了)。与此同时 Fink 的几位核心开发者创办了 Data Artisans 公司,主要做 Fink 的商业应用,帮助企业部署大规模数据处理解决方案;

⚫ 2014 年 12 月,Flink 项目完成了孵化,一跃成为 Apache 软件基金会的顶级项目;

⚫ 2015 年 4 月,Flink 发布了里程碑式的重要版本 0.9.0,很多国内外大公司也正是从这时开始关注、并参与到 Flink 社区建设的;

⚫ 2019 年 1 月,长期对 Flink 投入研发的阿里巴巴,以 9000 万欧元的价格收购了 Data Artisans 公司;之后又将自己的内部版本 Blink 开源,继而与 8 月份发布的 Flink 1.9.0 版本进行了合并。自此之后,Flink 被越来越多的人所熟知,成为当前最火的新一代大数据处理框架。

处理无边界和有边界数据

        任何类型的数据都是作为事件流生成的。信用卡交易、传感器测量、机器日志或网站或移动应用程序上的用户交互,所有这些数据都作为流生成。

数据可以作为无边界流或有边界流处理

 1、无边界流有开始,但没有定义的结束。它们不会在生成数据时终止并提供数据。未绑定的流必须被连续处理,即事件必须在摄入后立即处理。不可能等待所有输入数据到达,因为输入是无限的,在任何时间点都不会完成。处理无界数据通常需要以特定的顺序(例如事件发生的顺序)摄取事件,以便能够推断结果的完整性。

2、有边界的流具有定义的开始和结束。在执行任何计算之前,可以通过摄取所有数据来处理有边界的流。处理有界流不需要有序摄取,因为有界数据集总是可以排序的。有界流的处理也称为批处理。

Apache Flink_第2张图片

        ApacheFlink擅长处理无界和有界数据集。对时间和状态的精确控制使Flink的运行时能够在无限流上运行任何类型的应用程序。有边界的流由专门为固定大小数据集设计的算法和数据结构进行内部处理,从而产生优异的性能。

随时随地部署应用程序

        ApacheFlink是一个分布式系统,需要计算资源才能执行应用程序。Flink与所有常见的集群资源管理器(如Hadoop YARN和Kubernetes)集成,但也可以设置为作为独立集群运行。

        Flink旨在使前面列出的每个资源管理器都能正常工作。这是通过特定于资源管理器的部署模式实现的,这些模式允许Flink以惯用的方式与每个资源管理器交互。

        在部署Flink应用程序时,Flink会根据应用程序配置的并行性自动识别所需的资源,并向资源管理器请求这些资源。如果发生故障,Flink将通过请求新资源来替换失败的容器。提交或控制应用程序的所有通信都通过REST调用进行。这简化了Flink在许多环境中的集成。

以任何规模运行应用程序

        Flink旨在以任何规模运行有状态的流媒体应用程序。应用程序被并行化为可能数千个任务,这些任务在集群中分布并并发执行。因此,应用程序可以利用几乎无限量的CPU、主内存、磁盘和网络IO。此外,Flink很容易维护非常大的应用程序状态。它的异步和增量检查点算法确保了对处理延迟的最小影响,同时保证了一次状态一致性。

        用户报告了在其生产环境中运行的Flink应用程序的可观的可扩展性数字,例如应用程序每天处理数万亿的事件保持数TB状态的应用程序,以及在数千个内核上运行的应用程序。

利用内存性能

        状态Flink应用程序针对本地状态访问进行了优化。任务状态始终保持在内存中,或者如果状态大小超过可用内存,则保持在磁盘数据结构的高效访问中。因此,任务通过访问本地(通常在内存中)状态来执行所有计算,从而产生非常低的处理延迟。Flink通过定期和异步地将本地状态指向持久存储来确保在发生故障时的一次状态一致性。

Apache Flink_第3张图片

你可能感兴趣的:(Apache,Flink,flink,大数据,分布式)