[MIT 6.824: Distributed Systems] LEC 1: Introduction之Preparation

LEC 1: Introduction 的课前任务为阅读MapReduce论文。

 

何为MapReduce?

一种面向大数据处理的编程框架

 

MapReduce的优势?

MapReduce隐藏 分布式并行计算 的琐碎细节,让用户关注计算任务本身

其中,包括: 1) 数据切分; 2) 计算任务在机器间的调度; 3)机器故障; 4)机器间数据交换 等

 

MapReduce的编程模型?

输入: 键值对集合  --》 MapReduce --》输出: 键值对集合

 

具体流程:

Step 1. 某一键值对(Key, Value1)  --》 Map() --》 一个中间结果(Key, InterVal1)

Step 2. 某一键值对(Key, Value2)  --》 Map() --》 一个中间结果(Key, InterVal2)

Step 3. 系统将相同Key的键值对聚合

Step 4. 中间结果集合(Key, {InterVal1, InterVal2, ...} )  --》 Reduce() --》 最终结果(Key, { Result, ... } )

 

示例:统计文档中单词出现的次数

map(String key, String value):
    // key: document name 
    // value: document contents
    for each word w in value:
        EmitIntermediate(w, "1");

reduce(String key, Iterator values):
    // key: a word
    // values: a list of counts
    int result = 0;
    for each v in values:
        result += ParseInt(v);
    Emit(AsString(result));

 

MapReduce的具体执行流程?

 

 

 

 

参考材料

MapReduce. https://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf

 

 

你可能感兴趣的:([MIT 6.824: Distributed Systems] LEC 1: Introduction之Preparation)