flink-2 task之间传输数据方式、操作链和任务槽

task之间传输数据方式

task之间数据传递有四种方式

  • forward strategy
  • key-based strategy
  • broadcast strategy
  • random strategy

forward strategy

即转发策略: 一个task的输出只发送给一个task作为输入
优点

  • 如果两个task都在一个JVM中的话,那么就可以避免网络开销

在这里插入图片描述

key-based strategy

即基于键值的策略

  • 数据需要按照某个属性(我们称为 key)进行分组(或者说分区)
  • 相同key的数据需要传输给同一个task,在一个task中进行处理
    在这里插入图片描述

broadcast strategy

即广播策略

  • 数据随机的从一个task中传输给下一个operator所有的subtask。因为这种策略涉及数据复制和网络通信,所以成本相当高。
    在这里插入图片描述

random strategy

即随机策略

  • 数据随机的从一个task中传输给下一个operator所有的subtask
  • 保证数据能均匀的传输给所有的subtask,以便在任务之间均匀地分配负载
    在这里插入图片描述

注意

转发与随机策略是基于key-based策略的;转发策略和随机策略也可以看作是基于键的策略的变体,其中前者保存上游元组的键,而后者执行键的随机重新分配

操作链

操作链即任务链(不同场景下称呼不同)是将相关性很强的transformation操作绑定在一起,这样能够让转换过程中上下游的 Task 在同一个 Pipeline 中执行,进而避免因为数据在网络或者线程间传输导致的开销,提高整体的吞吐量和延迟。
如下图所示:将身处同一个TaskManager的key aggsink绑定到一起。从而使原来的4个task变为2个task

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值