课程网站
https://www.bilibili.com/video/BV1x7411M7Sf/?p=5&vd_source=1366da1662e82eb423a5117c984d03fb
采用Go来开发,本章做第一个Lab
写成博客的目的是防止自己走马观花,花了一堆时间还什么都没学到。
虽然我对我的表达能力很自信,但是我写博客的目的不是教给别人什么东西,而是逼迫自己认真操作、认真阅读。如果你的知识背景和我类似,你看我的博客将非常畅快,否则最好还是看原始的讲义。
参考知乎:
MIT 6.824 分布式系统 | 材料准备和环境搭建 - 知乎
环境搭建好以后,首先要想办法debug
mr里面有worker和cordinator,而cordinator我觉得就是master, 而worker通过Call方法的rpc来保持通信,rpc是go自带的包
实现步骤
worker方面
mapper
1 实现worker与condinator的交互
2 在rpc.go里面定义struct
3 定义maptask执行任务
4.maptask先通过rpc从cordinator获取任务
5 然后编写doMapTask来完成真正的任务
6 worker完成以后调用cordinator通知已完成任务
reducer
把reduce任务加入队列
挑选reduce任务
worker完成以后调用cordinator通知已完成任务
cordinator方面
分配mapper和reduce任务
需要有个队列分配任务,并加解锁
检查任务是否完成
修改任务的状态
标记任务为完成
有一说一,完全不知道从哪下手=.=