首頁技術(shù)文章正文

MapReduce是什么?有哪些特征和優(yōu)點(diǎn)?

更新時(shí)間:2023-05-05 來源:黑馬程序員 瀏覽量:

MapReduce是什么

Hadoop MapReduce是一個(gè)分布式計(jì)算框架,用于輕松編寫分布式應(yīng)用程序,這些應(yīng)用程序以可靠,容錯(cuò)的方式并行處理大型硬件集群(數(shù)千個(gè)節(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兩個(gè)操作函數(shù)(受到函數(shù)式編程語言的啟發(fā)),隨后被 Apache Hadoop參考并作為開源版本提供支持,叫做Hadoop MapReduce。

它的出現(xiàn)解決了人們在最初面臨海量數(shù)據(jù)束手無策的問題,同時(shí)它還是易于使用和高度可擴(kuò)展的,使得開發(fā)者無需關(guān)系分布式系統(tǒng)底層的復(fù)雜性即可很容易的編寫分布式數(shù)據(jù)處理程序,并在成千上萬臺(tái)普通的商用服務(wù)器中運(yùn)行。

MapReduce特點(diǎn)

易于編程

Mapreduce框架提供了用于二次開發(fā)的接口;簡單地實(shí)現(xiàn)一些接口,就可以完成一個(gè)分布式程序。任務(wù)計(jì)算交給計(jì)算框架去處理,將分布式程序部署到hadoop集群上運(yùn)行,集群節(jié)點(diǎn)可以擴(kuò)展到成百上千個(gè)等。

良好的擴(kuò)展性

當(dāng)計(jì)算機(jī)資源不能得到滿足的時(shí)候,可以通過增加機(jī)器來擴(kuò)展它的計(jì)算能力?;贛apReduce的分布式計(jì)算得特點(diǎn)可以隨節(jié)點(diǎn)數(shù)目增長保持近似于線性的增長,這個(gè)特點(diǎn)是MapReduce處理海量數(shù)據(jù)的關(guān)鍵,通過將計(jì)算節(jié)點(diǎn)增至幾百或者幾千可以很容易地處理數(shù)百TB甚至PB級別的離線數(shù)據(jù)。

高容錯(cuò)性

Hadoop集群是分布式搭建和部署得,任何單一機(jī)器節(jié)點(diǎn)宕機(jī)了,它可以把上面的計(jì)算任務(wù)轉(zhuǎn)移到另一個(gè)節(jié)點(diǎn)上運(yùn)行,不影響整個(gè)作業(yè)任務(wù)得完成,過程完全是由Hadoop內(nèi)部完成的。

適合海量數(shù)據(jù)的離線處理

可以處理GB、TB和PB級別得數(shù)據(jù)量

MapReduce局限性

MapReduce雖然有很多的優(yōu)勢,也有相對得局限性,局限性不代表不能做,而是在有些場景下實(shí)現(xiàn)的效果比較差,并不適合用MapReduce來處理,主要表現(xiàn)在以下結(jié)果方面:

實(shí)時(shí)計(jì)算性能差

MapReduce主要應(yīng)用于離線作業(yè),無法作到秒級或者是亞秒級得數(shù)據(jù)響應(yīng)。

不能進(jìn)行流式計(jì)算

流式計(jì)算特點(diǎn)是數(shù)據(jù)是源源不斷得計(jì)算,并且數(shù)據(jù)是動(dòng)態(tài)的;而MapReduce作為一個(gè)離線計(jì)算框架,主要是針對靜態(tài)數(shù)據(jù)集得,數(shù)據(jù)是不能動(dòng)態(tài)變化得。

分享到:
在線咨詢 我要報(bào)名
和我們在線交談!