嗯,基本上我知道分配工作的整个过程:
- 在 JobClient 上生成 StreamGraph;
- 在JobClient上生成JobGraph;
- 将 JobGraph 发送给 JobMaster 以生成 ExecutionGraph;
- 将 ExecutionGraph 发送到 TaskManager 以生成物理执行 计划。
但我不知道到底送的是什么东西。例如,当JobMaster将ExecutionGraph
发送到某个任务管理器时,ExecutionGraph
到底是什么?它是一个文件吗?某种溪流?还是别的什么?
如果是文件,如果文件太大怎么办?大小有限制吗?
如果是流,如果发送流花费太多时间怎么办?超时是否有一些限制?
作业管理器不发送执行图。在我看来,执行图是任务执行的逻辑视图(即操作员链的并行实例,又名任务,插槽共享任务组(。
作业管理器搜索要分配给槽共享组的可用任务槽。这些槽共享组中的任务将发送到具有相应槽的任务管理器。之后,这些任务在不同的线程中运行。
此外,作业管理器和任务管理器之间的任何类型的消息传递都是由 Akka 完成的。