一、并行计算遇到的问题
1、难以将任务分成相同大小的作业块
2、将独立进程运行的结果合并后,可能还需要进一步的处理
3、依旧受限于一台计算机的处理能力
二、MapReduce Job 的一些特点
1、MapReduce job 的定义:客户端要执行的一个工作单元,包括输入数据、MapReduce程序、配置信息。Hadoop 将Job 分成若干个小任务(task) 来执行。其中包括 map 任务和 task 任务。
2、各进程特点:
(1)、JobTracker 调度TaskTracker 运行任务,协调tasks,监督tasktracker,若出现失败可重新在另外一个tasktracker重新调度任务。
(2)、将很多分片分配给Map 函数,实现负载均衡;尽量实现数据本地优化。
(3)、Map 任务将其输出写入本地磁盘,而不是HDFS。
(4)、Reduce 不具备数据本地化优势,单个Reduce 任务的输入通常来自所有 Map 的输出
(5)、Reduce 的任务数量是特别指定的,而并非由输入大小决定
(6)、如果有多个Reduce 任务,每个map都会为其输出进行分区 (partion)
(7)、Reduce 任务中,每个key 对应的 所有 value 记录会发送到同一个Reduce 中。
(8)、shuffle 混洗, 即是map 任务和Reduce 任务之间的数据流,之所以称为shuffle,因为每个Reduce的任务都会来自很多任务
(9)、combine 可以避免map 任务和reduce 任务之间的数据传输。