MapReduce是一个软件框架,可方便的编写应用程序,以并行的方式在数千商用硬件组成的集群节点中处理数TB的数据,并且提供了可靠性和容错的能力。
MapReduce处理模型包括两个独立的步骤:
-并行Map阶段,输入数据被分割成离散块以便可以单独处理。
-shuffle阶段,每个Reduce的输入都是按照键排序的,系统执行排序的过程;
-Reduce阶段,汇总Map阶段的输出生成预期的结果。
JobTracker:负责TaskTracker的资源管理,跟踪资源使用率,管理作业的生命周期,如调度作业的各个任务,跟踪进度,以及为任务提供容灾服务。
TaskTracker:根据JobTracker的命令启动/清除任务,并且周期性地向JobTracker提供任务的状态信息。
MapReduce的缺陷:
1.可扩展性
-JobTracker内存中保存用户作业的信息
-JobTracker使用的是粗粒度的锁(节点心跳时间过长)
2.可靠性和可用性
-JobTracker失效会丢失集群中所有的运行作业,用户需要手动重新提交和恢复工作流
3.对不同编程模型的支持
-以MapReduce为中心的设计,不适合大型计算,需要新一个阶段的计算平台。