一、1.0版本
主要由兩部分組成:編程模型和運行時環境。
編程模型為用戶提供易用的編程接口,用戶只需編寫串行程序實現函數來實現一個分布式程序,其他如節點間的通信、節點失效,數據切分等,則由運行時環境完成。
基本編程模型將問題抽象成Map和Reduce兩個階段,Map階段將輸入數據解析成key/value,迭代調用map()函數后,再以key/value的形式輸出到本地目錄;Reduce階段則將key相同的value進行歸約處理,並將最終結果寫入到HDFS。
運行時環境由JobTracker和TaskTracker兩類服務組成,JobTracker負責資源管理和所有作業的控制,TaskTracker負責接收來自JobTracker的命令並執行。
二、2.0版本
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版本的擴展問題。