Flink架构

FLink是一个有状态的分布式实时计算框架。

一、Flink API介绍

1、最底层的是有状态的流处理,已经继承到DataStream API中,一般不直接使用。

2、第二层核心API,分为流处理DataStream和批处理DataSetAPI,一般用于java、scala开发,使用较多。

3、第三层TableAPI,以表为中心的声明式编程API,可以把一个流程定义为一个table,有元数据schema,可以执行部分sql操作,例如select、join等。table api可以和第二层API很好的结合使用。

4、最顶层的是SQL,也是现在非常活跃开发的Flink SQL,但是实时sql和离线sql在使用上还是需要注意区别。

二、Flink集群剖析

Flink集群中主要有两中角色:JobManager和TaskManager,都是进程级。

1、JobManager

JobManager作为作业的管理者,主要负责TaskManager的调度、task的状态维护及相应、触发checkpoint、失败后重启恢复等。它有三个部分:

(1)资源管理器ResourceManager:负责资源的提供、回收、分配,操作的是task slots(槽位)。
(2)调度器Dispatcher:负责提交作业,创建jobMaster,我们要经常用到的webUI。

(3)作业主JobMaster:负责管理单个JobGraph,一个集群上可以跑多个作业。

2、TaskManager

管理task,一个taskManager上有多个task。

3、Task

Task是线程级别的,执行具体的计算操作。多个task可以链接在一起,叫做chain,这样做的能减少task间的交互成本、线程切换、缓冲区开销等。下图虚线框中就是chain在一起的task,由一个task执行。

4、Slot

slot是一个最小的资源单位,每个task占有一个slot,task是线程级别的,归宿于TaskManager,也就是说如果一个TaskManager由4个Task组成,也就是有4个Slot,那么每个slot会分1/4的资源,目前主要分cpu、内存资源,例如一个TaskManager是4核8G,那么一个slot就是1核2G,但是注意目前只做到了内存级别的隔离,cpu没法完全分开。

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值