主要由兩部分組成:編程模型和運行時環境。編程
編程模型爲用戶提供易用的編程接口,用戶只需編寫串行程序實現函數來實現一個分佈式程序,其餘如節點間的通訊、節點失效,數據切分等,則由運行時環境完成。框架
基本編程模型將問題抽象成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版本的擴展問題。資源