【问题标题】:Difference between job, task and subtask in flinkflink中job、task和subtask的区别
【发布时间】:2018-12-04 10:03:54
【问题描述】:

我是flink新手,尝试理解:

  1. 工作
  2. 任务
  3. 子任务

我搜索了docs,但还是没找到。它们之间的主要区别是什么?

【问题讨论】:

    标签: apache-flink


    【解决方案1】:

    这里解释了任务和子任务 -- https://ci.apache.org/projects/flink/flink-docs-release-1.7/concepts/runtime.html#tasks-and-operator-chains:

    任务是一种抽象,表示可以在单个线程中执行的一系列运算符。诸如 keyBy 之类的东西(导致网络洗牌通过某个键对流进行分区)或管道并行度的变化会破坏链接并迫使操作员进入单独的任务。在上图中,应用程序具有三个任务。

    子任务是任务的一个并行切片。这是可调度、可运行的执行单元。在上图中,应用程序将在 source/map 和 keyBy/Window/apply 任务中以 2 个并行度运行,而在 sink 上以 1 个并行度运行 - 总共有 5 个子任务。

    作业是应用程序的运行实例。客户端向作业管理器提交作业,作业管理器将它们分割成子任务并安排这些子任务由任务管理器执行。

    更新:

    社区决定重新调整任务和子任务的定义,以匹配这些术语在代码中的使用方式——这意味着任务和子任务现在意味着同一件事:恰好一个并行实例运算符或运算符链。有关详细信息,请参阅Glossary

    【讨论】:

    • 嗨@david-anderson,看起来Flink中的Task相当于Spark中的TaskSet或Stage,而SubTask相当于Spark中的Task?
    • 任务和子任务在概念和代码中的设计和实现都是最糟糕的。 subtask 是由线程运行的最小工作单元,但在 Flink 源代码中,没有名为 Subtask 的类或类似的东西。什么是连线,有一个类叫Task,它实现了Runanble,也就是说Task是一个线程中运行的单元,这和上图完全不一样
    猜你喜欢
    • 2017-06-14
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多