大数据技术原理与应用学习笔记(十二)
- Flink
- Flink简介
- 为什么选择Flink
- 传统数据处理架构
- 大数据lambda架构
- 流处理架构
- Flink是理想的流处理框架
- Flink的优势
- 应用场景
- 事件驱动型应用
- 数据分析应用
- 数据流水线应用
- Flink技术栈
- 物理部署层
- Runtime核心层
- APIs & LIBRARIES层
- Flink体系结构
- Flink编程模型
- Flink编程实践
Flink
Flink简介
Flink特性:
- 批流一体化
- 精密的状态管理
- 事件时间支持
- 精确一次的状态一致性保障
为什么选择Flink
传统数据处理架构
特点是采用一个中心化的数据库系统来存储。随着业务量增大,负载会增大,容易发生问题。
大数据lambda架构
如图所示:
缺点:导致平台复杂度过高,运维成本高。
流处理架构
如图所示:
流处理架构具有如下特点:
- 不存在大型集中式数据库,避免了数据节点不堪重负;
- 将批处理看成流处理的子集
Flink是理想的流处理框架
如下表所示:
框架 | 性能 |
Flink | 低延迟√ 高吞吐√ 高性能√ |
Storm | 低延迟√ 高吞吐× 准确计算× |
SparkStreaming(微批处理) | 高吞吐√ 容错性√ 低延迟(实时处理)× |
Flink的优势
高级特性:
- 提供有状态的计算
- 支持状态管理
- 支持强一致性语义
- 支持对乱序消息的处理
优势:
- 同时支持高吞吐、低延迟、高性能
- 同时支持批处理、流处理
- 高度灵活的流式窗口
- 支持有状态计算
- 具有良好的容错性
- 具有独立的内存管理
- 支持迭代和增量迭代
应用场景
应用基本可分为 事件驱动型应用、数据分析应用和数据流水线应用 。
事件驱动型应用
优势:
- 访问本地数据,无需访问远程查询
- 每个应用只需考虑自己的数据,很少做协调工作
例子:反欺诈、异常检测、基于规则的报警、业务流程监控等。
数据分析应用
优势:
- 获取洞察结果的延迟更低
- 更加简单的应用架构
例子:电信网络质量分析、消费者技术中实时数据即席分析,大规模图分析等。
数据流水线应用
优势: 减少了数据转移过程的延迟
例子:电子商务实时查询索引构建,电子商务中持续ETL等。
Flink技术栈
Flink的层次结构可大体分为:物理部署层、Runtime核心层、APIs & LIBRARIES层 。
物理部署层
物理部署层为底层,运行模式包括:
- GCE/EC2
- Local
- Standalone集群
- YARN集群
Runtime核心层
该层为核心实现层,包括两套API:
- 流处理 DataStream API
- 批处理 DataSet API
APIs & LIBRARIES层
该层提供批处理和流处理的接口,并抽象出不同的应用类型的组件库:
- CEP(基于流处理的复杂事件处理库)
- SQL & Table库(流/批处理)
- FlinkML(基于批处理的机器学习库)
Flink体系结构
Flink系统主要由两个组件组成,分别为JobManager和TaskManager,Flink 架构也遵循Master-Slave架构设计原则,JobManager为Master节点,TaskManager为Slave节点。
Flink编程模型
Flink编程模型如图所示:
Flink编程实践
关于Flink编程实践请参考厦大数据库博客:Flink安装与编程实践(Flink1.9.1)