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
4Map(k,v)
split v into words
for each word w
emit(w,"1")
Reduce环节:
输入数据是通过RPC从各个map server上获取的map result,输出是最终统计结果,一般放到GFS。1
2Reduce(k,v)
emit(len(v))
MapReduce的优化
在2004年,当时的系统瓶颈是网络带宽,为了解决网络带宽的瓶颈做了一些优化,包括:
- 将MapReduce部署在GFS的服务器上,将map调度到有输入数据的节点的map worker,通过本地访问数据减少网络传输
- 通过Combiner 在map worker node进行局部合并,然后再通过网络发送给 reduce worker(MapReduce论文上的)