MIT6824笔记一 绪论与MapReduce

MIT 6.824 课程第一节笔记,主要介绍了分布式系统的驱动力、难点、类型等,还介绍了MapReduce。

分布式系统介绍

(1)驱动力

  • 更高的计算性能(并行计算、大CPU、大内存、大磁盘)
  • 容错机制(两台计算机运行相同的任务,一台失败可到另外一台)
  • 问题的分布特性(比如说银行转账)
  • RPC与代码隔离,只通过网络通信

这门课程主要研究性能与容错。

(2)困难

  • 并行
  • 容错
  • 兼顾性能

(3)分布式系统的类型

基础架构的类型主要是存储,通信(网络)和计算。

  • 实际上我们最关注的是存储,构建一种多副本,容错的,高性能分布式存储实现。

  • 会讨论一些计算系统,比如MapReduce。

  • 也会说一些关于通信的问题,但是主要的出发点是通信是我们建立分布式系统所用的工具。

对于存储和计算,我们的目标是为了能够设计一些简单接口,让第三方应用能够使用这些分布式的存储和计算,这样才能简单的在这些基础架构之上,构建第三方应用程序。

(4)工具

  • RPC(Remote Procedure Call)。RPC的目标就是掩盖我们正在不可靠网络上通信的事实。
  • 线程。这是一种编程技术,使得我们可以利用多核心计算机。对于本课程而言,更重要的是,线程提供了一种结构化的并发操作方式,这样,从程序员角度来说可以简化并发操作。
  • 并发控制,比如锁。

(5)其他特性

  • 可拓展性:N倍的机器能否带来N倍的性能提升?
  • 可用性:容错、故障应对
  • 一致性:读写一致性,系统正确的行为

Map Reduce

背景

Google (2003 年左右)面对巨量(数十 T)的索引数据和全网结构的数据,需要找到最重要的网页。这可以简化为一个排序问题,但如此数量级的排序,单机不是一个可选项。

MapReduce的思想是,应用程序设计人员和分布式运算的使用者,只需要写简单的Map函数和Reduce函数,而不需要知道任何有关分布式的事情,MapReduce框架会处理剩下的事情。

工作原理

两类任务:Map和Reduce一个主节点分配任务,若干个worker节点干活。

看起来很简单的架构,但在分布式环境下,需要考虑:

  • worker节点崩溃,需要任务完成确认机制以及崩溃后临时文件的清理
  • 网络通信不可靠,发送任务和确认任务的消息均可能丢失
作者

Desirer

发布于

2023-11-25

更新于

2024-06-09

许可协议