分布式系统MIT6.824学习总结-LECTURE1

1.分布式系统工程

分布式系统的目标

  • parallelism (并行,提高性能)
  • fault tolerance (容错)
  • physical (物理分布,根据实际跨地域的需要)
  • security / isolated (安全和隔离)

挑战

  • concurrency (并发控制)
  • patial failure (部分失败)
  • performance (性能)

2.MIT 6.824 课程介绍

  • lectures
  • papers
  • exams
  • labs
  • project (optional)

实验项目介绍

  • lab1: MapReduce
  • lab2: Raft for fault tolerance
  • lab3: k/v server
  • lab4: sharded k/v server

3.主要课题

涉及到的基础设施

  • Storage (存储)
  • Communication (网络)
  • Computation (计算)

课题

  • 实现: PRC, threads, concurrency control
  • 性能: 可扩展性,性能随节点数按比例提高
  • 容错: 追求可用性和可恢复性
  • 一致性: 强一致性和弱一致性

4.MapReduce

MapReduce概览

MapReduce是2004年Google开发,用来建立搜索索引、排序、网页结构分析。
这个是大规模分布式计算的代表,目的是提供给用户直接使用分布式计算,而不需要关注底层的分布式实现。
MapReduce主要分为 Map 和 Reduce 2个环节,例如对于统计单词出现次数的应用,示例如下:

Map环节:
输入数据是上千个text文件,可以从GFS获取,输出是放在本地的k/v数据。

1
2
3
4
Map(k,v)
split v into words
for each word w
emit(w,"1")

Reduce环节:
输入数据是通过RPC从各个map server上获取的map result,输出是最终统计结果,一般放到GFS。

1
2
Reduce(k,v)
emit(len(v))

MapReduce的优化

在2004年,当时的系统瓶颈是网络带宽,为了解决网络带宽的瓶颈做了一些优化,包括:

  • 将MapReduce部署在GFS的服务器上,将map调度到有输入数据的节点的map worker,通过本地访问数据减少网络传输
  • 通过Combiner 在map worker node进行局部合并,然后再通过网络发送给 reduce worker(MapReduce论文上的)