MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。
初始化时,数据会被划分成很多小块,以<key, value>的形式呈现。用户程序会分配一个master进程和很多个worker进程。
任务开始时,master会将任务分为两种(map和reduce),并分别为他们分配worker进程。
master的任务是:给map和reduce的worker分别分配任务;检测worker是否死掉;将map的结果通知reduce。
map的任务是:从input中获取数据,对数据进行处理,产生结果(<key,value>的链表)存储在本地磁盘。
reduce的任务是:收到master的通知后,从本地磁盘获取map的结果,对其进行整合,并写入输出文件。