6.824 MapReduce lab总结

先总结一下架构:
首先是worker向master申请任务,master分配任务Task给worker,并且开启一个 go 协程对Task的状态进行监控,当时间超过10s则由master来将原来的Task重新放进maptasks(一个存放Task的chan),这里master不会理会worker是crash了,还是某些原因导致运行速度很慢。当worke完成任务后则告诉master自己完成了任务,并且由master来更改相应的数据结构来表示该任务完成。

worker函数其实就是一个无限循环来取向master申请任务并做任务,因为worker需要在完成任务后继续申请任务并做任务。

所以Task结构需要维护一个Status,来表示worker该做map任务还是reduce任务,又或者是此时已经没有未分配 的任务,但是已分配的任务在其他worker还没有完成,此时worker向master申请任务时则需要分配一个Status为waiting的任务,worker收到之后就sleep一段时间,然后继续循环申请任务。

type Task struct {
   
	Phase int
	Status TaskStatus
	MapT MapTask
	ReduceT ReduceTask
}
type
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值