调度系统原有设计
2020-06-12 15:11:44 5 举报
圣著调度第一版架构图
作者其他创作
大纲/内容
MySQL
node5
worker
talos
produce task
sholud run
删除kill的任务
n7
kill接口
通知master结果
submit task
READY
partition3
onError
注:补偿接口为兜底机制,数据工场每隔一段时间调用确定任务状态
PO
Blocking queue
API 接口
...
Worker
node4
Agent
n6
nginx
cloud2
FE
partition1
submit
node2
数据已准备好
异步
true/false
master1
DISPATCHED
Service
master
Message Queue
云平台
n10
ACK
FAILED
工作流域
dag3
n2
consume task
node7
scheduler master
finish
node3
web server
job4
cloud
job1
worker2
通知worker kill任务,释放资源
Monitor
dag2
CREATED
job2
n3
Yarn
scan running
... ...
n9
node状态Waiting:等待上游完成Executing:正在执行Success:任务执行成功Fail:任务执行失败或被kill
主
dag域
数据工场所有作业依赖
Trigger
Scheduler
dag状态Running:有节点正在执行Success:所有节点皆成功Fail:任意一个节点失败
从
cloud3
第一天
SUCCEEDED
n8
PREPARING
executeId
n11
onSucess
kill task
sucess
ZooKeeper
worker3
Workflow
n1
node8
....
KILL命令
通知master
master2
通知云平台kill任务
zk
DTO/输出层
scheduler
ask status
回调
job5
task 2(SUCCEEDED)
第三次运行
n5
node1
Hive proxy
RUNNING
1. 数据工场所有具有数据依赖的作业统一处理,存在单机瓶颈2. 各业务线作业糅合在一起,一个脏数据影响全体3. 没有版本概念,用户无法回刷数据4. 只能按天生成,无法支持更细粒度的调度
dag1
job3
业务线1业务线2业务线3业务线4
ask status
fail
cloud1
partition2
Mapper
KILLED
task 3(FAILED)
任务域(异步调用版本)
n4
补偿接口
同步等待
1对n
第二次运行
第n天
worker1
分布式锁
BLOCKING
API
第一次运行
防腐层
1. 一个节点对应n(n>=1)个task2. task生成,依赖上游node生成的最新task执行成功3. node做状态管理,dag本身状态依赖内部node的状态4. node的状态依赖task状态
workflow
kill internal
task 1 (FAILED)
task 1(FAILED)
任务域(同步调用版本)
BO
Kill命令
第二天
Dispatcher
数据层
1. workflow做版本管理2. dag依据执行当时的版本生成node3. task依据node生成,n个task对应一个node4. workflow支持暂停,即暂时不调度
业务层
调度
node6
Master
Param/输入层
0 条评论
下一页