Mit6.824 Lab1-MapReduce】的更多相关文章

这是 MIT 6.824 课程 lab1 的学习总结,记录我在学习过程中的收获和踩的坑. 我的实验环境是 windows 10,所以对lab的code 做了一些环境上的修改,如果你仅仅对code 感兴趣,请移步 : github/zouzhitao mapreduce overview 先大致看一下 mapreduce 到底是什么 我个人的简单理解是这样的: mapreduce 就是一种分布式处理用户特定任务的系统.它大概是这样处理的. 用户提供两个函数 mapFunc(k1,v1)-> lis…
概述 MapReduce是由JeffreyDean提出的一种处理大数据的编程模型,用户定义map和reduce函数,map函数处理原始数据生成一系列键值对中间数据,reduce函数并合相同key的键值对. 编程模型 整个计算过程输入的是键值对,输出的也是键值对.用户只需要提供两个函数分别是Map和Reduce. 比如要统计大数据文本中的词频,我们可以写出如下的Map和Reduce函数: map(String key, String value): // key: document name //…
前言 Mit6.824 是我在学习一些分布式系统方面的知识的时候偶然看到的,然后就开始尝试跟课.不得不说,国外的课程难度是真的大,一周的时间居然要学一门 Go 语言,然后还要读论文,进而做MapReduce 实验. 由于 MR(MapReduce) 框架需要建立在 DFS(Distributed File System)的基础上实现,所以本实验是通过使用多线程来模拟分布式环境.虽然难度上大大降低,但是通过该实验,还是会让我们对 MR 的核心原理有一个较为深刻的认识. 做实验之前我们需要先把经典的…
MIT6.824食用过程 Lab1 MapReduce 一.介绍 本实验使用Go语言构建一个mapreduce库,以及一个容错的分布式系统.第一部分完成一个简单的mapreduce程序,第二部分写一个提交到mapreduce workers 的master 并且要能够处理workers 的错误. 库的接口和容错的方法跟mapreduce paper里面描述的类似. 二.环境搭建 vscode&&go 1. 安装golang 2. 安装git 3.安装cntlm 代理工具,用来给git 和…
MIT 6.824 LAB1 环境搭建 vmware 虚拟机 linux ubuntu server   安装 go 官方安装步骤: 下载此压缩包并提取到 /usr/local 目录,在 /usr/local/go 中创建Go目录树.例如: tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz 该压缩包的名称可能不同,这取决于你安装的Go版本和你的操作系统以及处理器架构. (此命令必须作为root或通过 sudo 运行.) 要将 /usr/loca…
LAB1 mapreduce mapreduce中包含了两个角色,coordinator和worker,其中,前者掌管任务的分发和回收,后者执行任务.mapreduce分为两个阶段,map阶段和reduce阶段. map阶段对应的是map任务.coordinator将会把任务分成多个部分,例如,有多个文件待处理,则每个文件的处理是一个任务.coordinator根据待处理文件生成多个任务,将这些任务用available管道暂存,供worker取用.worker将任务完成之后,需要告知coordi…
Lab 1链接:https://pdos.csail.mit.edu/6.824/labs/lab-1.html Part I: Map/Reduce input and output Part I需要补充两个关键功能:为map函数分解输出的功能和为reduce函数收集输入的功能,这两个功能对应的函数分别在common_map.go的doMap()函数和common_reduce.go的doRedce()函数. 本人首先梳理程序运行流程,其次补充代码,最后测试结果. 程序运行流程简述如下: Se…
首发于公众号:努力学习的阿新 前言 大家好,这里是阿新. MIT 6.824 是麻省理工大学开设的一门关于分布式系统的明星课程,共包含四个配套实验,实验的含金量很高,十分适合作为校招生的项目经历,在文章<2022 双非应届 CS 硕士校招上岸字节跳动(校招总结)>中,我也将其推荐给了各位读者.但由于课程是全英的,实验说明也是全英的,实验过程中还需要阅读相关的英文文献,很多同学(包括曾经的笔者)受困于英语,对其望而却步.因此,笔者决定开启系列文章:MIT 6.824(Spring 2020)实验…
什么是Map-Reduce呢? Map指的是一个形如下面定义的函数. def Map(k, v): //return [(k1, v1), (k2, v2), (k3, v3), ...] pass 它接受一个key和一个value,返回一组所谓的中间值.注意,返回的不是一个dict,所以k1可能等于k2. Reduce指的是一个形如下面定义的函数. def Reduce(k, [v1, v2, v3, ....])://return v pass 它接受一个key和该key对应的所有在Map函…
MIT-6.828-JOS-环境搭建 ELF文件格式 lab1:C, Assembly, Tools, and Bootstrapping lab2:Memory management lab3:User Environments lab4:Preemptive Multitasking lab5:File system, Spawn and Shell lab6:Network Driver…
1.Intro github : https://github.com/CreatorsStack/CreatorDB lab1实现数据库基本的存储逻辑结构,具体包括:Tuple,TupleDesc,HeapPage,HeapFile,SeqScan, BufferPool等. Tuple和TupleDesc是数据库表的最基本元素了.Tuple就是一个若干个Field的,TupleDesc则是一个表的meta-data,包括每列的field name和type. HeapPage和HeapFil…
摘要 raft是一种比paxos容易理解的一致性算法,实现起来比paxos简单许多.本文前部分描述算法的细节,后部分尝试探讨下该算法的原理. 算法描述 raft算法之所以简单的原因之一是它将问题分解成三个子问题,分别是: Leader选举 Log复制 安全性保证 概述 raft协议中每个server都要维护一些状态,并且对外提供两个RPC调用分别是RequestVote RPC和AppendEntries RPC用于选举和log复制. 要想理解raft,其实就是搞明白: leader和follo…
概述 lab2中实现了raft协议,本lab将在raft之上实现一个可容错的k/v存储服务,第一部分是实现一个不带日志压缩的版本,第二部分是实现日志压缩.时间原因我只完成了第一部分. 设计思路 如上图,lab2实现了raft协议,本lab将实现kvserver.每个raft都关联一个kvserver,Clerks发送Put(), Append(), Get() RPC给leader服务器中的kvserver,kvserver收到请求后将操作打包成Log Entry提交给raft,然后阻塞等待ra…
源代码参见我的github: https://github.com/YaoZengzeng/MIT-6.824 Part I: Word count MapReduce操作实际上就是将一个输入文件拆分成M份,交由M个Map task进行操作.每个Map task生成R个包含中间键值对的结果.R个Reduce task执行Reduce操作,其中第i个Reduce task操作每个Map task的第i个输出文件.最终,生成R个结果文件,通过Merge操作,将结果生成一个输出文件. 1.mapred…
简介 当我们要统计数亿文本的词频,单个机器性能一般,况且是数亿级数据,处理是十分缓慢的,对于这样的任务,希望的是多台电脑共同处理,大幅度减少任务时间.联合多台电脑一起工作的系统就是分布式系统. 最近在学MIT6.824分布式系统课程,第一个Lab就是MapReduce,MapReduce是Google公司2004年发表的一篇论文,介绍很多任务都可以分为两步操作--Map和Reduce(比如要统计词频,Map分别对每个文件生成单词和单一数目,分不同区块保存,Reduce对不同区块进行统计,得到最终…
摘要: 源代码参见我的github:https://github.com/YaoZengzeng/MIT-6.824 Lab3: Paxos-based Key/Value Service Introduction 在Lab2中我们依靠单个的master view server来获取primary.如果view server不可用(崩溃了或者有网络问题),那么key/value service就不工作了,即使primary和backup都是可用的.而且它在处理server(primary或者ba…
源代码参见我的github:https://github.com/YaoZengzeng/MIT-6.824 Lab 2:Primary/Backup Key/Value Service Overview of lab 2 在本次实验中,我们将使用primary/backup replication 来提供能够容错的key/value service.为了让所有的clients和severs都认同哪个server是primary,哪个server是backup,我们将引入一个master ser…
MIT6.828 lab1地址:http://pdos.csail.mit.edu/6.828/2014/labs/lab1/ 第一个练习,主要是让我们熟悉汇编,嗯,没什么好说的. Part 1: PC Bootstrap 首先,整个实验使用qemu这款模拟软件来,来对代码进行调试,相当于我们在qemu这个模拟的计算机平台上,运行自己的程序.可以再qemu这个软件上进行gdb的调试,比较方便. 首先看下整个内核在qemu上的模拟的结果: 整个内核现在能实现的就两个功能,一个kerninfo,显示…
PartIV 实现 处理worker 失败情况. worker 处理失败,master 应该重新分配该任务给其他的worker 处理. rpc 失败情况复杂,可能worker 结果回应丢失了,也有可能 worker还在处理,但是 master rpc 超时了.考虑两个worker都拿到相同的task 且都有结果文件的情况, 要确保输出任务的原子性.当前这个程序框架无法保证任务输出的原子性,只考虑失败的worker没任何输出.   测试命令 $ go test -run Failure maste…
partIII 实现 分发MapReduce 任务,实现 schedule() 方法在 mapreduce/schedule.go. schedule()函数的职责是把任务分给可用的worker. schedule()通过信道registerChan参数读取 注册的worker. worker与schedule()之间的顺序是没有确定的. schedule()告诉worker 执行远程函数调用Worker.DoTask. 远程调用的参数 DoTaskArgs定义在 mapreduce/commo…
序言 1. master.go 可以正常调用Distributed() 和 Sequential(). Sequential 顺序执行主要用于调试. 2. master : 创建一个 RPC server(master_rpc.go). 等待 worker 注册服务(master.go Register() RPC 调用). schedule() (schedule.go) 决定调度一个任务给worker 和处理worker 工作失败的状况. 3. master 任务每个输入文件就是一个 map…
本文转载自:https://gongfukangee.github.io/2019/09/06/Job/ 作者:G.Fukang 开源项目推荐: JavaGuide: Java学习+面试指南!Github 56k+ 的 Java项目.一份涵盖大部分Java程序员所需要掌握的核心知识. springboot-guide:SpringBoot 学习指南!重要知识点以及常见面试题总结. programmer-advancement:技术人员应该具有的一些好习惯. 秋招 阿里本地生活 - Java 开发…
作品基本信息 作品名称:A Sea Dirge(海的挽歌) 作者:William Shakespeare(威廉·莎士比亚) 出版年代:1612 编注:此诗选自<暴风雨>第一幕第二场.标题<海的挽歌>系原编者所加. 作品原文 Full fathom five thy father lies: Of his bones are coral made; Those are pearls that were his eyes: Nothing of him that doth fade1…
最近在做MIT6.824的几个实验,真心觉得每一个做分布式相关开发的程序员都应该去刷一遍(裂墙推荐),肯定能够提高自己的技术认知水平,同时也非常感谢MIT能够把这么好的资源分享出来. 其中第二个实验,就是要基于raft算法,实现一个分布式一致性系统.但今天先不说raft算法,而是先讨论下什么是分布式一致性问题,以及为什么它会难!!下一章再说raft是如何设计从而解决了分布式共识这一难题. 什么是分布式一致性问题 首先,什么是分布式系统一致性问题?分布式系统这个词应该不用多解释,简单地说就是由多个…
上一篇讲述了什么是分布式一致性问题,以及它难在哪里,liveness和satefy问题,和FLP impossibility定理.有兴趣的童鞋可以看看分布式系统一致性问题与Raft算法(上). 这一节主要介绍raft算法是如何解决分布式系统中一致性问题的.说起raft大家可能比较陌生,但zookeeper应该都比较熟悉了,zookeeper的ZAB协议可以说和raft算法是非常相似的. 再PS:本篇的重点是介绍raft算法的逻辑,所以有些细节会选择性得忽略,不然就太长了.对具体实现细节有兴趣的童…
VM-FT 论文总结 说明:本文为论文 <The Design of a Practical System for Fault-Tolerant Virtual Machines> 的个人总结,难免有理解不到位之处,欢迎交流与指正 . 论文地址:VM-FT 论文 本文的总结包括论文内容以及 MIT6.824 Lec4 中的授课内容,其中包含了论文中没有提及的一些细节 . 1. 前言 本论文主要介绍了一个用于提供 容错虚拟机 (fault-tolerant virtual machine) 的企…
VM-FT 论文研读 说明:本文为论文 <The Design of a Practical System for Fault-Tolerant Virtual Machines> 的个人理解,难免有理解不到位之处,欢迎交流与指正 . 论文地址:VM-FT 论文 本文的总结包括论文内容以及 MIT6.824 Lec4 中的授课内容,其中包含了论文中没有提及的一些细节 . 1. 前言 本论文主要介绍了一个用于提供 容错虚拟机 (fault-tolerant virtual machine) 的企…
Aurora总结 说明:本文为论文 <Amazon Aurora: Design Considerations for High Throughput Cloud-Native Relational Databases> 的个人理解,难免有理解不到位之处,欢迎交流与指正 . 论文地址:Aurora Paper 本文首先基于 MIT6.824 课程内容介绍 AWS 云数据库的演进过程,接着基于论文内容介绍 Aurora. 0. 简介 Aurora 是一种由 AWS 于 2017 年提出的关系型数…
现在我们准备做第一个作业Lab1啦 wjk大神也在做6.824,可以参考大神的笔记https://github.com/zzzyyyxxxmmm/MIT6824_Distribute_System Part I The Map/Reduce implementation you are given is missing some pieces. Before you can write your first Map/Reduce function pair, you will need to f…
本节内容:Lect 1 MapReduce框架的执行过程: master分发任务,把map任务和reduce任务分发下去 map worker读取输入,进行map计算写入本地临时文件 map任务完成通知master 告知本地中间结果文件的位置大小信息 master通知reduce worker reduce worker从不同的map worker读取自己负责的部分,这个过程称为shuffle reduce worker读取之后会在本地进行排序 调用用户的reduce方法进行计算 最终reduc…