flink入门-架构

Apache Flink是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态计算。(对数据进行状态计算)Flink能在所有常见集群环境中运行,并能以内存存储快速的和任意规模进行计算。(很强大)。
Flink架构中重要方面。
处理无界和有界数据(这里的无界就是实时处理,有界数据就是一个时间段内的数据也就是批量处理–定时任务)
任何类型的数据库都可以形成一种事件流。信用卡交易,传感器测量,机器日志(这一块就是在我的工作中所使用的的部分),网站或移动应用程序上的用户交互记录,所有这些数据都形成一种流。
数据可以被作为 无界 或者 有界
1、无界流 有定义流的开始,但没有定义流结束。它们会无休止的产生数据。无界流的数据必须持续处理,即数据被摄取后需要立即处理。我们不能等到所有数据都到达再处理,因为输入时无限的,在任何时候输入都不会完成。处理误解数据通常要求以特定顺序摄取事件,例如事件发生的顺序,以便能够推断结果的完整性。
2、有界流 有定义的开始也有定义的结束。有界流可以在摄取所有的数据后再进行计算。有界流所有数据可以被排序,所以并不需要有序摄取。有界流处理通常被称为批处理。
在这里插入图片描述
Apache Flink擅长处理无界和有界数据集 精确的时间控制和状态化使得Flink的运行(runtime)能够运行任何处理误解流的应用。有界流则由一些专为固定大小数据集特殊设计的算法和数据结构进行内部处理,产生了出色的性能。
部署应用到任何地方
Apache Flink是一个分布式系统,他需要计算资源来执行应用程序。Flink集成了所有常见的集群资源管理器,例如Hadoop Yarn、 Apache Mesos和Kubernetes,但同时也可以作为独立的集群运行。
Flink被设计为能够很好的工作在上述每个资源管理器中,这是通过资源管理器特定(resource manager specififc)的部署模式实现的。Flink可以采用与当前资源管理器相适应的方式进行交互。
部署Flink应用程序时,Flink会根据应用程序配置的并行性自动标识所需要的资源,并从资源管理器请求这些资源。在发生故障的情况下,Flink通过请求新资源来替换发生故障的容器。提交或控制应用程序的所有通信都是通过REST调用进行的,这可以简化Flink与各种环境的集成。
运行任意规模应用
Flink旨在任意规模上运行有状态流应用。因此,应用程序被并行化为可能数千个任务,这些任务分布在集群中并发执行。所以应用程序能够充分利用无尽的CPU,内存,磁盘和网络IO。而且Flink很容易维护非常大的应用程序状态。其异步和增量的检查点算法对处理延迟生产最小的影响,同时保证精准一次状态的一致性。
Flink用户报告了其生产环境中一些令人印象深刻的扩展数字
–处理每天处理数亿的事件
–应用维护几TB大小的状态
–应用在数千个内核上运行
利用内存性能
有状态的Flink程序针对本地状态访问进行了优化。任务的状态始终保留在内存中,如果状态大小超过可用内存,则会保存在高性能的访问的磁盘数据结构中。任务通过访问本地(通常在内存中)状态来进行所有的计算,从而产生非常低的处理延迟。flink通过定期和异步对本地状态进行持久化存出来保证故障场景下精确一次的状态一致。
在这里插入图片描述

发布了434 篇原创文章 · 获赞 58 · 访问量 31万+

猜你喜欢

转载自blog.csdn.net/ppwwp/article/details/104137920