分布式计算,Job和task

本文深入探讨了Voddeploy系统中集群任务(Clusterjob)与具体任务(Vserverjob)之间的区别,详细解释了VodController作为JobTracker的角色,如何生成并分配任务给VServerCom+作为TaskTracker,以及它们之间的通信机制,特别是与传统Hadoop系统在JobTracker与TaskTracker间的RPC通信方式的不同之处。

Job是关于整个输入数据和面向整个集群(还没有分机器)的概念,task一般是处理输入数据的子集,并且和集群中的具体一台机器相联系。


Vod deploy系统的架构

cluster job 相当于job, vserver job相当于task,VodController 相当于JobTracker,VServer Com+相当于 taskTracker

输入首先是一个cluster job 的 priority queue,但默认都赋一样的优先级,退化成普通的queue,这里的queue是一个逻辑结构,实际是用数据库表实现,先后顺序用order by实现。逻辑上是每一个cluster对应一个queue,job里用clusterId指定了哪个集群


JobTracker (vodController) 负责由job 生成task,并且根据一定的策略分配节点(veserver),对于hadoop的jobTracker,首先是要对输入的大文件进行data  partition,然后分给不同的task node处理i,而VOD deploy系统,task就是拷贝相同的媒体文件,没有data partition这一步。


每个task node(vserver com+)对应一个 task队列,也是逻辑上的队列,实现是所有的server的 task 都放在一个数据库表,用serverId区分,每个server用自己的serverId 取task。


taskTracker和 JobTracker之间有heartbeat,并且定时上报task进度,执行情况以及server 状态(磁盘空间,available带宽)。task Tracker服务启停会register和unregister自己。这样JobTracker知道有哪些taskTracker


当一个job 的所有task都成功结束,job才会被mark成success,可以允许partially success的状态。

hadoop 的各个组件通信都是基于RPC的,包括JobTracker和taskTracker之间也是,JobClient通过RPC向JobTracker提交job,JobTracke通过RPCr向taskTracker 分配task, taskTracker通过RPC向jobTracker汇报status,是双向RPC。

Vod deploy系统则不是直接call, 而是用的持久化队列,即把job放入队列,jobTracker定时取,牺牲了一定的即时性,好处是解耦,没有单点failure,这种自己用timer去pull的模式就是解决单点failure,因为只要有一个role负责assign、去call,这个role就是single failure point。LoadBalancer就是单点失败点,而如果改为,请求放到一个全局队列,各个web server自己去取,就没有SPF问题。

总结一下分布式计算的通用问题

1)计算节点管理(register, 心跳, membership, 用量、状态汇报)

2)JobTracker这个role,负责接收job,分成task, 分配给计算节点

3)TaskTracker 这个role代表 计算节点,

4)task的状态、进度,job的状态、进度,

3)通信问题 RPC push v.s. 每个组件配个队列,自己pull



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值