RM启动TM的过程可知,k8s TM的入口为kubernetes-taskmanager.sh。由此可知TM入口类为org.apache.flink.kubernetes.taskmanager.KubernetesTaskExecutorRunner。

TE初始化

TE处理提交任务

  1. 创建Task(org.apache.flink.runtime.taskmanager.Task)对象,启动Task线程。
  2. 初始化TaskInvokable(具体封装了operator的任务,如StreamTask),并启动。
    TaskInvokable最早是在StreamGraphGenerator内,transform转化为StreamGraph过程中AbstractOneInputTransformationTranslator#translateInternal-》addNode添加到StreamNode里去的。
    在一步步转化中,最终在submitTask时转化到了TaskInformation结构中。
  3. StreamTask invoke执行真正的任务。
    1. runMailboxLoop。
      MailboxProcessor做两件事:the default action(e.g. record processing) and mailbox actions (e.g. checkpoint trigger, timer firing, …)
    2. mailboxDefaultAction.runDefaultAction(defaultActionContext);也就是StreamTask#processInput
    3. StreamInputProcessor#processInput做具体任务处理逻辑:read-operator.processElement-write
      具体数据读写逻辑,在Flink数据流动介绍。