flink task与slot

前面几篇都是从自己开发的角度来思考该怎么做实时计算,但是思路切到去理解flink是怎么实现的话就需要从另一个角度去学习了。

flink 将一个应用划分为多个task,放在taskslot中执行,什么是taskslot呢?flink将节点分为了jobmanager和taskmanager,在taskmanager上启动的是一个jvm进程,每个taskmanager上jvm进程中的taskslot数量是根据flink的配置文件来的。为了避免内存竞争就引入了taskslot,但是taskslot的作用就是隔离内存,各个taskslot还是共享cpu的,这样在同一个jvm上的task共享tcp连接,在一定程度上减少了网络传输提升了性能。

在一个 Flink 任务中,有很多的算子,这些算子的计算压力各不相同,比如简单的 map 和 filter 算子所需要的资源不多,但是有些算子比如 window、group by 则需要更多的计算资源才能满足计算所需。这时候那些资源需求大的算子就可以共用其他的 Slot,提高整个集群的资源利用率。

在整个 Flink 的资源管理的类中,核心的类包括 Scheduler、SlotPool、JobMaster。它们之间的交互流程主要包括:Scheduler 调度器会向 SlotPool 资源池申请和释放 Slot;如果 SlotPool 不能满足需求,那么会向 ResourceManager 发起申请;获取到的资源通过 JobMaster 分配给 SlotPool。
在这里插入图片描述

当然并行度也可以修改,在算子/配置文件/提交任务和执行环境中均可修改。

实时计算中也会遇到需要将实时表与维度表关联的情况,类似于后端开发业务代码,需要将两张表join,但是DB的join是在数据库汇总完成的,flink join时的数据可能一端来自hbase一端来时kafka,这种情况可以有三种方式join一个是每次都同步读取维度表数据,显然这是非常影响性能的,一种是将维度表全量加载到内存,显然这只适合维度表比较小的情形,最后一种就是用同步读取数据结合LRU缓存了,这样即提升了热点数据的读取效率又减少了内存使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值