主要由两部分组成:编程模型和运行时环境。编程
编程模型为用户提供易用的编程接口,用户只需编写串行程序实现函数来实现一个分布式程序,其余如节点间的通讯、节点失效,数据切分等,则由运行时环境完成。框架
基本编程模型将问题抽象成Map和Reduce两个阶段,Map阶段将输入数据解析成key/value,迭代调用map()函数后,再以key/value的形式输出到本地目录;Reduce阶段则将key相同的value进行归约处理,并将最终结果写入到HDFS。分布式
运行时环境由JobTracker和TaskTracker两类服务组成,JobTracker负责资源管理和全部做业的控制,TaskTracker负责接收来自JobTracker的命令并执行。函数
2.0版本在编程模型上是同样的,可是在运行时环境上引入全新的资源管理框架:YARN,将JobTracker中的资源管理和做业控制功能分开,分别由两个不一样进程ResourceManager和ApplicationMaster实现,ResourceManager负责全部应用程序的资源分配,Application负责管理一个应用程序。接口
在HDFS方面,2.0版本引入HDFS Federation,它让多个NameNode分管不一样的目录进而实现访问隔离和横向扩展,同时完全解决NameNode单点故障问题。进程
能够看出,在计算框架MapReduce方面,1.0和2.0的主要差别仍是在资源管理方面,YARN的引入让MapReduce在扩展性和多框架支持方面更加完善。而存储系统引入HDFS联盟来解决1.0版本的扩展问题。资源