MIT 6.824 Lecture 1 - Introduction

前言

在经历了近乎两周的内耗焦虑后,我开启了新的篇章。我发现啊,减少内耗的最有效方法,就是让自己忙碌起来。前段时间的日子主要就是刷题+背面经,虽然有在做,但好像还是蛮闲的,u know,没有什么每天必须抓紧时间完成的硬性指标。于是,我就找了这样一个MIT的经典课程:6.824 分布式系统。早就听闻这门课的大名了,今天我也开启了这个篇章,也想来试一试。

如果我没有见过太阳,我也许会忍受黑暗,可如今,太阳把我的寂寞照耀得更加荒凉。

未来的路肯定会很坎坷,希望未来的你不要放弃。我在未来等你~

2023.7.27 ~


MIT 6.824 Lecture 1 -Introduction

课程大纲

人们设计分布式系统得目的是为了获得跟高的性能。

课程主要围绕两个问题:性能和容错

lab:

  1. MapReduce;
  2. Raft(通过复制来让系统容错的算法);
  3. 用Raft来建立一个可以容错的KV服务器
  4. 分片式KV服务:把KV服务器分发到一系列的独立集群中,这样你会切分你的KV存储系统,通过这些独立的副本样群进行加速,并行的对集群进行多个复制;你同样需要负责不同服务期间许多数据块的移动,来让他们在运行过程中不损失。(多个服务器上的多个分区,来实现并行加速)

分布式

人们使用大量的相互协作的计算机驱动力是

  • 并行提高性能
  • 容错(复制)(这样就不用付程序员的钱来修复了)
  • 空间上分布的设备之间需要协调
  • 限制出错域,提高安全性

实现 Implications

  • RPC
  • Threads

分布式基础架构
存储、通信、计算

分布式系统三个指标

  • 可扩展性 - 性能
    • 指增加设备就能够提高性能的能力
  • 可用性 - 容错
    • 在特定的故障范围内,系统仍然能够提供服务,系统仍然是可用的
    • 弱一级:可恢复性
    • 方案:非易失存储 + 复制(灾备)
  • 一致性
    • 强一致:
      • 所有机子都能读到最近的一次写入。
      • 通信昂贵、同步代价很高
    • 弱一致:
      • 允许读取出旧的数据
      • 高性能

MapReduce

介绍
关于这个MapReduce(Map:映射,Recude:压缩),将是第一个lab,它是一个著名的分布式计算框架,可以并行的高效处理海量数据集,在大数据处理、并行计算、机器学习等方面都有很广泛的应用。

一个很经典的应用就是单词计数Word Count——高效统计海量文本中单词出现次数

编程模型
在这里插入图片描述

  1. 用户程序首先调用的MapReduce库将输入文件分成M个数据片度,每个数据片段的大小一般从16MB到64MB(可以通过可选的参数来控制每个数据片段的大小)。然后用户程序在机群中创建大量的程序副本。
  2. 这些程序副本中的有一个特殊的程序–master。副本中其它的程序都是worker程序,由master分配任务。有M个Map任务和R个Reduce任务将被分配,master将一个Map任务或Reduce任务分配给一个空闲的worker。
  3. 被分配了map任务的worker程序读取相关的输入数据片段,从输入的数据片段中解析出key/value pair,然后把key/value pair传递给用户自定义的Map函数,由Map函数生成并输出的中间key/value pair,并缓存在内存中。
  4. 缓存中的key/value pair通过分区函数分成R个区域,之后周期性的写入到本地磁盘上。缓存的key/value pair在本地磁盘上的存储位置将被回传给master,由master负责把这些存储位置再传送给Reduce worker。
  5. 当Reduce worker程序接收到master程序发来的数据存储位置信息后,使用RPC从Map worker所在主机的磁盘上读取这些缓存数据。当Reduce worker读取了所有的中间数据后,通过对key进行排序后使得具有相同key值的数据聚合在一起。由于许多不同的key值会映射到相同的Reduce任务上,因此必须进行排序。如果中间数据太大无法在内存中完成排序,那么就要在外部进行排序。
  6. Reduce worker程序遍历排序后的中间数据,对于每一个唯一的中间key值,Reduce worker程序将这个key值和它相关的中间value值的集合传递给用户自定义的Reduce函数。Reduce函数的输出被追加到所属分区的输出文件。
  7. 当所有的Map和Reduce任务都完成之后,master唤醒用户程序。在这个时候,在用户程序里的对MapReduce调用才返回。

在这里插入图片描述
简短总结一下

  • 单个Master主节点负责:任务创建与分配;
  • 多个Worker从节点负责:任务处理、状态汇报
    • Mapper进行映射
      在映射阶段,master将大数据集分成小块,然后再不同的Mapper从结点上进行并行的计算处理,生成键值对key-value pair(key-单词,value-当前次数)作为中间结果保存在文档中,并且将文档路径告诉master
    • Reducer进行压缩
      在reduce规约阶段,master会分配reducer对应的中间文件,这些中间的键值对会被reducer合并,生成最终的计算结果

Reference

Google MapReduce 论文详解
6.824 笔记

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值