项目简介
本项目基于Go语言开发,涵盖分布式MapReduce系统与分布式键值存储系统。分布式MapReduce系统由coordinate和worker构成,通过RPC对话达成分布式任务处理,协调器可监控任务完成状况并重新分配未按时完成的任务;分布式键值存储系统运用Raft协议保障数据的一致性和持久性,包含分片控制器和分片键值存储,借助RPC通信协调分布式环境中的操作。
项目的主要特性和功能
分布式MapReduce系统
- 分布式处理:由一个coordinate进程和多个并行的worker进程实现分布式MapReduce任务处理。
- RPC通信:worker与coordinator通过RPC对话,worker向coordinator请求任务。
- 任务监控与重试:coordinator监控worker任务完成情况,10s未完成则重新分配任务。
- 数据存储与处理:中间文件按规则命名,用JSON格式存键值对,worker的map和reduce任务按特定流程处理数据。
分布式键值存储系统
- 分布式一致性:通过Raft协议确保分布式环境中数据的一致性和持久性。
- 分片管理:分片控制器将分片分配给复制组,保证数据均匀分布。
- RPC通信:利用Go语言的RPC库实现服务器间通信,支持跨节点操作。
- 测试框架:提供完整测试框架,验证系统的正确性和性能。
- 可视化工具:可查看系统的线性化信息和操作历史。
安装使用步骤
分布式MapReduce系统
- 按实验要求使用类Unix系统,可用WSL+Goland实验,参考goland+wsl配置过程 - shui00cc - 博客园 (cnblogs.com) 配置。
- 拉取实验代码:
git clone git://g.csail.mit.edu/6.5840-golabs-2023 6.5840
。 - 编译插件:
go build -buildmode=plugin ../mrapps/wc.go
。 - 清除旧输出文件:
rm mr-out*
。 - 启动协调器:
go run mrcoordinator.go pg-*.txt
。 - 在其他窗口启动worker:
go run mrworker.go wc.so
。 - 查看结果:
cat mr-out-* | sort | more
。 - 测试:
cd ~/6.5840/src/main
,然后运行bash test-mr.sh
。
分布式键值存储系统
- 安装Go语言环境。
- 进入项目目录,编译并运行相关的服务器和客户端代码。
- 根据需要,运行单元测试验证系统的正确性。
- 使用可视化工具查看系统的线性化信息和操作历史。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】