原创

什么是Flink? Flink的特点和优势

一、什么是Flink?

Apache Flink is a framework and distributed processing engine for stateful computations over unbounded and bounded data streams. Flink has been designed to run in all common cluster environments, perform computations at in-memory speed and at any scale
Flink的世界观是数据流。
对 Flink ⽽⾔,其所要处理的主要场景就是流数据,批数据只是流数据的⼀个极限特例⽽已,所以 Flink也是⼀款真正的流批统⼀的计算引擎。

二、Flink的特点和优势

1、同时支持高吞吐、低延迟、高性能
2、支持事件时间(Event Time)概念,结合Watermark处理乱序数据
3、支持有状态计算,并且支持多种状态 内存、文件、RocksDB
4、支持高度灵活的窗口(Window)操作 time、count、session
5、基于轻量级分布式快照(CheckPoint)实现的容错 保证exactly-once语义
6、基于JVM实现独立的内存管理
7、Save Points(保存点)

三、Flink基本架构

Flink系统架构中包含了两个角色,分别是JobManager和TaskManager,是一个典型的Master-Slave架
构。JobManager相当于是Master,TaskManager相当于是Slave。


JobManager负责整个集群的资源管理与任务管理,在一个集群中只能由一个正在工作(active)的JobManager,如果HA集群,那么其他JobManager一定是standby状态。

(1)资源调度
1、集群启动,TaskManager会将当前节点的资源信息注册给JobManager,所有TaskManager全部注册完毕,集群启动成功,此时JobManager就掌握整个集群的资源情况。
2、client提交Application给JobManager,JobManager会根据集群中的资源情况,为当前的Application分配TaskSlot资源。

(2)任务调度
1、根据各个TaskManager节点上的资源分发task到TaskSlot中运行。
2、Job执行过程中,JobManager会根据设置的触发策略触发checkpoint,通知TaskManager开始checkpoint。
3、任务执行完毕,JobManager会将Job执行的信息反馈给client,并且释放TaskManager资源。

TaskManager(JVM进程)作用
1、负责当前节点上的任务运行及当前节点上的资源管理,TaskManager资源通过TaskSlot进行了划分,每个TaskSlot代表的是一份固定资源。例如,具有三个 slots 的 TaskManager 会将其管理的内存资源分成三等份给每个 slot。 划分资源意味着 subtask 之间不会竞争内存资源,但是也意味着它们只拥有固定的资源。注意这里并没有 CPU 隔离,当前 slots 之间只是划分任务的内存资源。
2、负责TaskManager之间的数据交换。

client客户端
负责将当前的任务提交给JobManager,提交任务的常用方式:命令提交、web页面提交。获取任务的执行信息。

本文链接地址:http://www.ysxbohui.com/article/156

正文到此结束