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