MIT 6.824 分布式系统 lab1 MapReduce 遇到的问题

开发环境WIN10+WSL Ubuntu18.04(直接在微软商店下载使用)

1、map任务写入中间文件时为空 原因:

file, _ := os.OpenFile(intermidateFile, os.O_APPEND|os.O_RDWR, 0777)

刚开始以为openfile只需要os.O_APPEND就可以了,然而openfile的参数应该为两个os.O_APPEND和os.O_RDWR(读写与追加)

2、worker任务执行完后应该继续执行,用的for循环,然而报错dial unix /var/tmp/824-mr-0: socket: too many open files

因为没有关闭打开的文件,通过lsof  |wc -l查看打开的文件数可以发现超过了1024(linux默认的最大打开文件数)

3、刚开始对于map任务的设计是对每一个kv pair处理,打开mr-X-Y文件并处理,这样会很慢,每个mapwork要执行10分钟。所以直接打开nReduce个文件,减少文件打开次数,总共只有nReduce次打开文件操作。fileList := [10]*os.File{}//这里的10就是nReduce

4、输出结果跟MapReduce论文中提到的不一样,MapReduce论文指出一般情况下,MapReduce会将结果分摊到R个分区上,产生R个输出文件,这R个输出文件经常作为另一个MapReduce任务的输入,或者在另外一个可以处理多个分割文件的分布式应用中使用。而本lab需要整合到一个文件mr-out-0里,构造两个函数

func unionFile(filename1 string, filename2 string)

func sortFinalFile(filename string)

在done函数判定所有worker完成后由master执行

本lab中我只修改了wc_test的整合,而没有进行indexer_test的整合,不过查看生成的文件和正确文件发现是一样的,所以wctest能pass而indexer fail 了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值