Apache Flink官方文档中文版--Flink是什么?
架构
原文链接
Apache Flink是一个用于对无边界和有边界数据流进行有状态计算的框架和分布式处理引擎。Flink设计为运行在所有常见的集群环境中,并且以内存速度和任何规模执行计算。
在这里,我们解释Flink架构的相关重要内容。
处理无边界和有边界数据
任何类型的数据都是作为事件流产生的。信用卡交易事务,传感器测量,机器日志以及网站或移动应用程序上的用户交互行为,所有这些数据都生成流。
数据可以作为无边界或有边界流处理。
- 无边界流定义了开始但没有定义结束。它们不会在生成时终止提供数据。必须持续地处理无边界流,即必须在拉取到事件后立即处理它。无法等待所有输入数据到达后处理,因为输入是无边界的,并且在任何时间点都不会完成。处理无边界数据通常要求以特定顺序(例如事件发生的顺序)拉取事件,以便能够推断结果完整性。
- 有边界流定义了开始和结束。可以在执行任何计算之前通过拉取到所有数据后处理有界流。处理有界流不需要有序拉取,因为可以随时对有界数据集进行排序。有边界流的处理也称为批处理。
Apache Flink擅长处理无边界和有边界数据集。在事件和状态上的精确控制使得Flink运行时能在无边界流上运行任意类型的应用程序。有界流由算法和数据结构内部处理,这些算法和数据结构专门针对固定大小的数据集而设计,从而获得优秀的性能。随处部署应用程序
Apache Flink是一个分布式系统,需要计算资源才能执行应用程序。Flink与所有常见的集群资源管理器(如Hadoop YARN,Apache Mesos和Kubernetes)集成,但也可以作为独立集群运行。
Flink旨在很好地适用于之前列出的每个资源管理器。这是通过特定于资源管理器的部署模式实现的,这些模式允许Flink以其惯用的方式与每个资源管理器进行交互。
部署Flink应用程序时,Flink会根据应用程序配置的并行度自动识别所需资源,并从资源管理器请求它们。如果发生故障,Flink会通过请求新的资源来替换发生故障的容器。提交或控制应用程序的所有通信都通过REST调用进行。这简化了Flink在许多环境中的集成。任意规模运行应用程序
Flink旨在以任意规模运行有状态流式应用程序。应用程序可以并行化为数千个在集群中分布和同时执行的任务。因此,应用程序可以利用几乎无限量的CPU,内存,磁盘和网络IO。而且,Flink可以轻松维护非常大的应用程序的状态。其异步和增量检查点算法确保对延迟处理的影响最小,同时保证精确一次的状态一致性。
用户报告了在其生产环境中运行的Flink应用程序的扩展数字令人印象十分深刻,例如:-
应用程序每天处理数万亿个事件
- 应用程序维护数个TB的状态
- 应用程序在数千个CPU核上运行
利用内存的性能
有状态的Flink应用程序针对本地状态访问进行了优化。任务状态始终驻留在内存中,或者,如果状态大小超过可用内存,则保存在访问高效的磁盘上的数据结构中。因此,任务通过访问本地(通常是内存中)状态来执行所有计算,从而产生非常低的处理延迟。Flink通过定期和异步检查点将本地状态到持久存储来保证在出现故障时的精确一次的状态一致性。
应用
原文链接
Apache Flink是一个用于对无边界和有边界数据流进行有状态计算的框架。Flink在不同的抽象级别提供多个API,并为常见用例提供专用库。
在这里,我们介绍Flink易于使用以及富有表现力的API和库。
为流应用程序构建块
流式计算框架构建和运行的应用程序的类型,由框架控制流,状态和时间的程度来定义。在下文中,我们描述了流处理应用程序的这些构建块,并解释了Flink处理他们的方法。
流
显然,流是流式处理的一个基本方面。然而,流可以有不同的特征,这些特征会影响流的处理方式。Flink是一个多功能的处理框架,它可以处理任意类型的流。
- 有边界和无边界的流:流可以是无边界或是有边界的,如固定大小的数据集。Flink具有处理无边界流的复杂功能,但也有专用的运算符来有效地处理有边界流。
- 实时和记录的流:所有数据都作为流生成,有两种方法可以处理数据。在生成时实时处理它或者将流持久保存到存储系统(例如文件系统或对象存储),并在之后对其进行处理。Flink应用程序可以处理记录或实时流。
状态
每个非凡的流式应用都是有状态的。只有对个别事件应用转换的应用程序才不需要状态。运行基本业务逻辑的任何应用程序都需要记住事件或中间结果,以便在之后的时间点访问它们,例如在收到下一个事件时或在特定持续时间之后。
应用程序的状态在Flink中是一等公民。您可以通过查看Flink在状态处理环境(上下文context)中提供的所有功能来查看。
操作
- Apache Flink官方文档中文版-数据流上有状态的计算
- [置顶] Apache Spark 2.2.0 官方文档中文版(翻译完成 98%. 除 MLib 外) | ApacheCN
- Apache ActiveMQ 官方文档中文版
- Apache2.0官方文档(中文版,超强)
- Apache Calcite官方文档中文版-概览-1.背景
- Apache Calcite官方文档中文版- 概览-2. 教程
- Apache Calcite官方文档中文版- 进阶-1. 适配器
- Apache ActiveMQ 官方文档中文版
- [置顶] scikit-learn(sklearn)0.18 官方文档中文版 | ApacheCN
- Apache Knox官方文档中文版(1.1.0)--简介
- 《Spark Python API 官方文档中文版》 之 pyspark.sql (一)
- Apache Storm 官方文档 —— 分布式 RPC(转)
- Spring 4.x官方参考文档中文版——第21章 Web MVC框架(1)
- Android官方开发文档Training系列课程中文版:管理Activity的生命周期之Activity的重建
- Android官方开发文档Training系列课程中文版:Android的安全建议 .
- android Fragments (Android官方文档中文版)
- 【转载】Apache Storm 官方文档 —— 基础概念
- TestNG官方文档中文版(02)—— Annotation
- Android官方开发文档Training系列课程中文版:创建自定义View之View的绘制
- Android官方开发文档Training系列课程中文版:OpenGL绘图之图形绘制