少于 1 分钟阅读

摘要

6.824 的第一个实验,已经充分展示了分布式系统的理念,分布式系统由多个主机组成,之间通过网络沟通协作构成一个系统。

其实分布式系统可以类比成公司,公司的人员之间进行协作,一起完成项目,分布式系统更像是社会,单体应用则像个人。

下面的话简单讲解下我个人 mapreduce(mr) lab 的代码。

源码

lab 页面和论文 里面所说, mr 主要由一个 coordinator 和 多个 worker 组成。coordinatortask 分配给 worker ,待 worker 完成所有任务后,mapreduce 结束。

worker 接受任务并完成任务,worker 既可以是 map task 又可以是 reduce task ,接到对应的任务调用 mapfreducef 即可。 由于 mrmap tasks 没有完成时,是不可以进入到 reduce 阶段的,所以需要增加些任务类型,standby taskexit taskstandby taskworker 进入到短暂的休眠阶段,exit task 告知 worker mapreduce 结束了,进程退出。

coordinator 则主要是跟踪和分配任务,为此定义两个 RPC 接口,GetTaskReport ,前者获取任务,后者汇报 mapreduce 任务的结果,如文件地址, 任务 ID 等,coordinator 记录状态。coordinator 还需要有个定时器定时查看过期任务,并回收任务,分配给其他 worker ,由于 worker 函数是幂等性的,Report 的重复任务可以忽略。

留下评论