赞
踩
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它能够基于同一个Flink运行时,提供支持流处理和批处理两种类型应用的功能。Flink将流处理和批处理统一起来,也就是说作为流处理看待时输入数据流是无界的;批处理被作为一种特殊的流处理,只是它的输入数据流被定义为有界的。
flink程序三个基本构建块
并行数据流
- 在flink中,transformation是由一组operator组成,每一个operator被分割成operator subtask,同一个operator的多个 subtasks在不同的线程、不同的物理机或不同的容器中彼此互不依赖得并行执行。
- Stream在operator有两种形式
- One-to-one:类似于spark中的窄依赖
- Redistributing:类似于spark中的宽依赖
operator chains
出于分布式程序效率考虑,Flink将前后有依赖关系的一组operator的subtask链接在一起形成operator chains。operator chain在一个线程中执行,它能减少线程之间的切换和基于缓存区的数据交换,在减少时延的同时提升吞吐量。链接的行为可以在编程API中进行指定
窗口
flink可以基于窗口对在流上对数据进行聚合操作。flink支持的窗口有:
- 时间窗口(tumbing windows(不重叠),sliding windows(有重叠,session windows(有空隙的活动))
- 数据窗口(tumbing windows(不重叠),sliding windows(有重叠,session windows(有空隙的活动))
- 事件窗口
时间
Stream中的记录时,记录中通常会包含各种典型的时间字段,Flink支持多种时间的处理:
- event Time:表示事件创建时间
- Ingestion Time:表示事件进入到Flink Dataflow的时间
- Processing Time:表示某个Operator对事件进行处理事的本地系统时间(是在TaskManager节点上)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。