包括 与 两部分,在使用期期间我主要看了 部分,
即 执行作业的部分。
1. 中几个主要的概念
整体上可以分为这么几条执行的线索,, 与
。
1.
每一个 都会在用户端通过 类将应用程序以及配置参数打包成 文件存储在
,并把路径提交到 ,然后由 创建每一个 (即
和 )并将它们分发到各个 服务中去执行。
2.
是一个 服务,软件启动之后 接收 ,负责调度 的
每一个子任务 运行于 上,并监控它们,如果发现有失败的 就重新
运行它。一般情况应该把 部署在单独的机器上。
3.
是运行于多个节点上的 服务。 主动与
通信,接收作业,并负责直接执行每一个任务。 都需要运行在 的
上,
下图简单的描述了三者之间的关系:
2. 数据结构
!"#$%
提交 后, 会创建一个 #$% 来跟踪和调度这个
,并把它添加到 队列里。#$% 会根据提交的 " 中定义的输入数据
集(已分解成 )创建对应的一批 #$% 用于监控和调度 ,
同时在创建指定数目的 #$% 用于监控和调度 ,缺省为 ! 个
。
"#$%
启动任务时通过每一个 #$% 来 ,这时会把
对象(即 和 )序列化写入相应的 服务中,
收到后会创建对应的 #$%(此 #$% 实现非
中使用的 #$%,作用类似)用于监控和调度该 。启动具体
的 进程是通过 #$% 管理的 对象来运行的。
会自动装载 ",并设置好环境变量后启动一个独立的 " 进程