flink简介
flink是什么?
Apache Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,提供支持流处理和批处理两种类型应用的功能。
flink来历
Apache flink来自于柏林理工大学的一个研究性项目,在2014年被Apache孵化器接受,然后迅速成为了Apache Software Funcdation的顶级项目之一。
flink特点
现有的开源计算方案,会把流处理和批量处理作为两种不同的应用类型:
流处理一般需要支持低延迟(毫秒级别)、Exactly-once保证(数据只消费一次)
批处理需要支持高吞吐、高效处理
flink是完全支持流处理的,也就是说作为流处理看待时,输入数据流是无界的;‘
批处理被作为一种特殊的流处理,只是它的输入’数据流被定义为有界的的;
flink组件栈
- Deployment层(部署层)
- flink的部署模式:本地、集群(Standalone/YARN(生产中应用))、云(GCE/EC2)
- runtime层:
- 提供了支持flink计算的全部核心实现
- 比如:支持分布式Stream处理,JobGraph到ExecutionGraph的映射、调度等等,为上层API提供基础服务
- 提供了支持flink计算的全部核心实现
- API层
- 实现了面向无界Stream的流处理
- DataStream API
- 面向Batch的批处理的API
- DateSet API
- 实现了面向无界Stream的流处理
- Libaries层
- 在API层之上 构建的满足特定应用的实现计算框架,也分别对应于 面向流处理 和 面向批处理
flink自身优势
- 支持高吞吐、低延迟、高性能的流处理(同样的业务代码,吞吐量优于Spark streaming 和 Strom)
- 支持高度灵活的窗口操作(Window)
- 支持有状态计算的Exactly-one语义
- 提供DateStream API 和 DateSet API
其他框架比较