• 理解Flink中的Task和SUBTASK


    1、概念

    Task(任务):Task是一个阶段多个功能相同的subTask 的集合,类似于Spark中的TaskSet。

    subTask(子任务):subTask是Flink中任务最小执行单元,是一个Java类的实例,这个Java类中有属性和方法,完成具体的计算逻辑。

    Operator Chains(算子链):没有shuffle的多个算子合并在一个subTask中,类似于Spark 中的Pipeline。

    Slot(插槽):Flink 中计算资源进行隔离的单元,一个Slot中可以运行多个subTask,但是这些subTask必须是来自同一个application的不同阶段的subTask。

    State(状态):Flink在运行过程中计算的中间结果。

    2、DATAFLOWS数据流介绍

    Flink程序的基本构建是 流(stream)和转换(Transform)

    从概念上讲,流是对当前数据流向的记录(流也可能是永无止境的),而 转换是将一个或多个流作为输入,根据需要求转换成我们要的格式的流的过程。

    2.2.1、如何划分TASK的依据

    1、并行度发生变化时

    2、keyBy()/window()/apply() 等发生Rebalance重新分配

    3、调用startNewChain()方法,开启一个新的算子链

    4、调用diableChaining()方法,即:告诉当前算子操作不使用算子链操作。

    3、OPERATOR CHAINS介绍

    Flink将多个subTask 合并成一个Task(任务),这个过程叫做 Operator Chains,每个任务由一个线程执行。使用Operator Chains(算子链)可以将多个分开的subTask拼接成

    一个任务。

    Operator Chains 是一个有用的优化,它减少了线程到线程的切换和缓冲的开销,并在降低延迟的同时提高了总体吞吐量。

  • 相关阅读:
    python 模拟(简易)音乐播放器
    Python中的多态如何理解?(转)
    mysql踩得坑
    python简单模拟博客园系统
    04 信号量
    02 事件
    01 管道
    32 管道 事件 信号量 进程池 线程的创建
    02 验证进程之间是空间隔离的
    01 进程的其他方法
  • 原文地址:https://www.cnblogs.com/ssqq5200936/p/13909669.html
Copyright © 2020-2023  润新知