更新時間:2023-05-05 來源:黑馬程序員 瀏覽量:
Hadoop MapReduce是一個分布式計算框架,用于輕松編寫分布式應用程序,這些應用程序以可靠,容錯的方式并行處理大型硬件集群(數(shù)千個節(jié)點)上的大量數(shù)據(jù)(多TB數(shù)據(jù)集)。
MapReduce是一種面向海量數(shù)據(jù)處理的一種指導思想,也是一種用于對大規(guī)模數(shù)據(jù)進行分布式計算的編程模型。
發(fā)展歷程
MapReduce最早由Google于2004年在一篇名為《MapReduce:Simplified Data Processingon Large
Clusters》的論文中提出。
論文中谷歌把分布式數(shù)據(jù)處理的過程拆分為Map和Reduce兩個操作函數(shù)(受到函數(shù)式編程語言的啟發(fā)),隨后被 Apache Hadoop參考并作為開源版本提供支持,叫做Hadoop MapReduce。
它的出現(xiàn)解決了人們在最初面臨海量數(shù)據(jù)束手無策的問題,同時它還是易于使用和高度可擴展的,使得開發(fā)者無需關(guān)系分布式系統(tǒng)底層的復雜性即可很容易的編寫分布式數(shù)據(jù)處理程序,并在成千上萬臺普通的商用服務器中運行。
易于編程
Mapreduce框架提供了用于二次開發(fā)的接口;簡單地實現(xiàn)一些接口,就可以完成一個分布式程序。任務計算交給計算框架去處理,將分布式程序部署到hadoop集群上運行,集群節(jié)點可以擴展到成百上千個等。
良好的擴展性
當計算機資源不能得到滿足的時候,可以通過增加機器來擴展它的計算能力?;贛apReduce的分布式計算得特點可以隨節(jié)點數(shù)目增長保持近似于線性的增長,這個特點是MapReduce處理海量數(shù)據(jù)的關(guān)鍵,通過將計算節(jié)點增至幾百或者幾千可以很容易地處理數(shù)百TB甚至PB級別的離線數(shù)據(jù)。
高容錯性
Hadoop集群是分布式搭建和部署得,任何單一機器節(jié)點宕機了,它可以把上面的計算任務轉(zhuǎn)移到另一個節(jié)點上運行,不影響整個作業(yè)任務得完成,過程完全是由Hadoop內(nèi)部完成的。
適合海量數(shù)據(jù)的離線處理
可以處理GB、TB和PB級別得數(shù)據(jù)量
MapReduce雖然有很多的優(yōu)勢,也有相對得局限性,局限性不代表不能做,而是在有些場景下實現(xiàn)的效果比較差,并不適合用MapReduce來處理,主要表現(xiàn)在以下結(jié)果方面:
實時計算性能差
MapReduce主要應用于離線作業(yè),無法作到秒級或者是亞秒級得數(shù)據(jù)響應。
不能進行流式計算
流式計算特點是數(shù)據(jù)是源源不斷得計算,并且數(shù)據(jù)是動態(tài)的;而MapReduce作為一個離線計算框架,主要是針對靜態(tài)數(shù)據(jù)集得,數(shù)據(jù)是不能動態(tài)變化得。