大数据技术学习——Flink

举报
slx_share 发表于 2023/03/02 11:37:08 2023/03/02
【摘要】 Flink是分布式流数据处理引擎。

1       一句话介绍

Flink是分布式流数据处理引擎。

2       基本概念

  • 流数据(streams):连续事件产生的、连续的、随时间不断变化的数据项。例如传感器每隔5秒测量一次,产生连续的数据。
    • 无界流:有定义流的开始,但没有定义流的结束。
    • 有界流:有定义流的开始,也有定义流的结束。有界流数据可以被重新排序,不需要有序摄取,有界流处理又被称为批处理。
  • 批处理:根据时间将数据划分成多个批次,再周期性地执行批次运算。


  • 流处理:持续处理数据,一次处理一个。


  • 分布式流处理:输入流根据Key值分成几个分区(例如hash),分配到相应的额计算实例上。因此每个计算分区(每个计算实例)会承担一个或多个Key的计算。


  • 时间(time):时间是判断业务是否滞后,数据处理是否处理及时的依据。
    • 事件发生时间(Event Time):数据在源端产生的时间。
    • 事件进入时间(Ingestion Time)Source算子获得数据的时间。
    • 事件处理事件(Processing Time):数据被处理的时间。
  • 窗口(windows):计算的时间区间,分为滚动窗口、滑动窗口以及会话窗口。
    • 滚动窗口:窗口之间时间点不重叠。


  • 滑动窗口:窗口之间存在时间点重叠。


  • 会话窗口:有数据存在才有窗口,一段时间没有数据视为窗口结束。


  • 状态(state):状态是一个基于时间的概念,某个时刻之前历史数据的集合就是该时刻的状态。
  • 检查点(checkpoint):检查点是容错机制的核心,周期性记录所有算子(operator)的状态并生成快照持久化存储。
  • 保存点(savepoint):由用户手动创建,可以理解为检查点+元数据,从保存点可以启动自身应用或另一个应用。
  • 槽位(slot)slotFlink执行Job时的最小资源分配单位,在slot中运行着具体的任务。一个TaskManager下的slot之间仅实现内存的隔离,不能实现CPU隔离。Yarn模式下,slot就是Yarn分配的container

3       Flink架构


Flink的技术栈如上,RuntimeFlink的核心组件。可以采用单机、集群、容器部署模式,提供流处理以及批处理API

Standalone集群部署模式下,Runtime直接部署在本地操作系统之上;Yarn集群模式下,Runtime部署在Container之上。

Runtime包含JobManager以及TaskManager两个部分。

  • JobManagerFlink系统的管理节点,HA模式下有多个。负责管理TaskManager,协调taskTaskManager上执行。具体包含三个组件:
    • 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 ResourceManagerJobManager注册
  • JobManager返回注册成功
  • Flink ResourceManagerYarn RM申请和TaskManager一一对应的Container
  • Flink ResourceManager启动TaskManager
  • TaskManagerJobManager注册自己

5       Flink执行流程

Flink中,应用程序都是并行和分布式运行的,一个stream会分成几个partition,一个operator会分成几个subtask


6       Flink特性

  • Flink能实现高吞吐、低时延、容错机制、丰富的时间语义支持、丰富的状态管理。

Storm实现了低时延,但是牺牲了吞吐量;Spark Streaming以微批处理方式提升了吞吐量,但是牺牲了低时延。

  • Flink作为流处理层,配合Kafka等消息传输层,兼具高性能以及持久性,不需要集中式数据库。

7       参考

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。