大数据技术学习——Flink
【摘要】 Flink是分布式流数据处理引擎。
1 一句话介绍
Flink是分布式流数据处理引擎。
2 基本概念
- 流数据(streams):连续事件产生的、连续的、随时间不断变化的数据项。例如传感器每隔5秒测量一次,产生连续的数据。
- 无界流:有定义流的开始,但没有定义流的结束。
- 有界流:有定义流的开始,也有定义流的结束。有界流数据可以被重新排序,不需要有序摄取,有界流处理又被称为批处理。
- 批处理:根据时间将数据划分成多个批次,再周期性地执行批次运算。
- 流处理:持续处理数据,一次处理一个。
- 分布式流处理:输入流根据Key值分成几个分区(例如hash),分配到相应的额计算实例上。因此每个计算分区(每个计算实例)会承担一个或多个Key的计算。
- 时间(time):时间是判断业务是否滞后,数据处理是否处理及时的依据。
- 事件发生时间(Event Time):数据在源端产生的时间。
- 事件进入时间(Ingestion Time):Source算子获得数据的时间。
- 事件处理事件(Processing Time):数据被处理的时间。
- 窗口(windows):计算的时间区间,分为滚动窗口、滑动窗口以及会话窗口。
- 滚动窗口:窗口之间时间点不重叠。
- 滑动窗口:窗口之间存在时间点重叠。
- 会话窗口:有数据存在才有窗口,一段时间没有数据视为窗口结束。
- 状态(state):状态是一个基于时间的概念,某个时刻之前历史数据的集合就是该时刻的状态。
- 检查点(checkpoint):检查点是容错机制的核心,周期性记录所有算子(operator)的状态并生成快照持久化存储。
- 保存点(savepoint):由用户手动创建,可以理解为检查点+元数据,从保存点可以启动自身应用或另一个应用。
- 槽位(slot):slot是Flink执行Job时的最小资源分配单位,在slot中运行着具体的任务。一个TaskManager下的slot之间仅实现内存的隔离,不能实现CPU隔离。Yarn模式下,slot就是Yarn分配的container。
3 Flink架构
Flink的技术栈如上,Runtime是Flink的核心组件。可以采用单机、集群、容器部署模式,提供流处理以及批处理API。
Standalone集群部署模式下,Runtime直接部署在本地操作系统之上;Yarn集群模式下,Runtime部署在Container之上。
Runtime包含JobManager以及TaskManager两个部分。
- JobManager:Flink系统的管理节点,HA模式下有多个。负责管理TaskManager,协调task到TaskManager上执行。具体包含三个组件:
- ResourceManager:负责资源分配与回收,管理task slot。
- Dispatcher:提供REST接口接收应用并为应用创建JobMaster,对外提供WebUI。
- JobMaster:与应用一一对应,负责JobGraph的执行。
- TaskManager:执行任务流,缓存并交换数据流。一个task slot对应一个正在运行的task,一个slot内可以有多个operator。每个TaskManager是一个JVM进程,每个task对应一个线程。
4 Flink集群构建流程(YARN)
- Flink Cli解析本地环境配置,向Yarn RM请求启动AM
- AM中启动Flink JobManager
- AM中启动Flink ResourceManager
- Flink ResourceManager向JobManager注册
- JobManager返回注册成功
- Flink ResourceManager向Yarn RM申请和TaskManager一一对应的Container
- Flink ResourceManager启动TaskManager
- TaskManager向JobManager注册自己
5 Flink执行流程
在Flink中,应用程序都是并行和分布式运行的,一个stream会分成几个partition,一个operator会分成几个subtask。
6 Flink特性
- Flink能实现高吞吐、低时延、容错机制、丰富的时间语义支持、丰富的状态管理。
Storm实现了低时延,但是牺牲了吞吐量;Spark Streaming以微批处理方式提升了吞吐量,但是牺牲了低时延。
- Flink作为流处理层,配合Kafka等消息传输层,兼具高性能以及持久性,不需要集中式数据库。
7 参考
- https://www.cnblogs.com/rossiXYZ/p/13554085.html
- https://www.infoq.cn/theme/28
- https://ci.apache.org/projects/flink/flink-docs-release-1.13/docs/learn-flink/overview/
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)