6.824Lecture1-MapReduce

Backgorund

  • big data
  • lots of kv data stuctures, like inverted index

Method

Abstract view

  • split files from GFS to disks
  • master分配worker执行map任务,生成k,v值,存入disk,map回传disk地址给master
  • master传递地址给reduce worker,reduce worker使用RPC读disk数据
  • sort by key, 并将所有values聚合
  • reduce
  • master返回reduce结果给GFS

Fault tolerance

  • fail -> rerun: worker rerun不会产生其他问题
  • worker fault: Master 周期性的 ping 每个 Worker,如果指定时间内没回应就是挂了。将这个 Worker 标记为失效,分配给这个失效 Worker 的任务将被重新分配给其他 Worker;
  • master fault: 中止整个 MapReduce 运算,重新执行。

Performance

  • bandwidth: 尽量保持worker和其执行的文件在同一台机器上,会相近的机器
  • slow workers: 吊起执行快的作为backup worker,取最先执行完的worker

Cons

  • 实时性
  • 复杂需求时需要大量相互依赖的mr逻辑 -》难开发,难调试

Refs

作为一种范式,而非产品?