數(shù)據(jù)密集型計(jì)算:MapReduce與Hadoop的真正競(jìng)爭(zhēng)力
互聯(lián)網(wǎng)絡(luò)用戶的劇增和寬帶網(wǎng)絡(luò)的普及,使得互聯(lián)網(wǎng)絡(luò)服務(wù)的本質(zhì)是以海量數(shù)據(jù)處理為中心的服務(wù)。從搜索引擎、視頻共享到電子商務(wù),互聯(lián)網(wǎng)絡(luò)服務(wù)的成功與否在很大程度上依賴于所提供數(shù)據(jù)的規(guī)模和質(zhì)量,數(shù)據(jù)處理的及時(shí)性、有效數(shù)據(jù)的比例等。
Gordon Bell、Jim Gray和Alex Szalay在2006年1月的Computer雜志上發(fā)表的“Petascale computational systems”中指出,計(jì)算機(jī)科學(xué)正在發(fā)生變化,以數(shù)據(jù)密集(Data-intensive)型計(jì)算為主要趨勢(shì)。高性能計(jì)算系統(tǒng)必須設(shè)計(jì)為一個(gè)均衡的系統(tǒng),不僅僅是單純的處理器性能達(dá)到Peta級(jí),而且也包括I/O和網(wǎng)絡(luò)。數(shù)據(jù)的局部性(Data Locality)在PB級(jí)的數(shù)據(jù)處理中顯得尤為重要,即應(yīng)該盡量讓計(jì)算靠近數(shù)據(jù)存儲(chǔ)而不是遠(yuǎn)程拷貝數(shù)據(jù)進(jìn)行計(jì)算。Gordon的因特網(wǎng)經(jīng)濟(jì)模型表明,在因特網(wǎng)上遠(yuǎn)程移動(dòng)1字節(jié)數(shù)據(jù)的代價(jià)是昂貴的,這只有在平均每字節(jié)數(shù)據(jù)需要耗費(fèi)10萬個(gè)CPU指令周期處理時(shí)才是劃算的。數(shù)據(jù)局部性對(duì)軟件的設(shè)計(jì)提出了挑戰(zhàn),因?yàn)榇蠖鄶?shù)的中間件都未考慮數(shù)據(jù)移動(dòng)的昂貴代價(jià)和未利用數(shù)據(jù)的緩存策略。
海量數(shù)據(jù)處理問題的挑戰(zhàn) 海量數(shù)據(jù)處理能力面對(duì)的挑戰(zhàn)是:
n 面對(duì)PB級(jí)數(shù)據(jù),很難完全在內(nèi)存中完成處理過程,很大程度上依賴于磁盤I/O,并且需要可擴(kuò)展的處理能力
n 需要降低數(shù)據(jù)處理的成本,包括利用普通商用PC服務(wù)器組成的集群,最小化每單元計(jì)算能力、RAM和I/O的成本
n 需要保障在大規(guī)模計(jì)算過程中的可靠性
每18到24個(gè)月CPU頻率和磁盤傳輸速率,RAM和磁盤容量會(huì)加倍,但是磁盤尋址時(shí)間由于音圈電機(jī)定位的限制其發(fā)展速度卻近乎常數(shù)(每年不到5%)。 可擴(kuò)展的海量數(shù)據(jù)計(jì)算必須從依賴于磁盤尋址時(shí)間(seek-time)的計(jì)算轉(zhuǎn)到依賴于磁盤傳輸時(shí)間(transfer-time),即傳統(tǒng)的關(guān)系數(shù)據(jù)庫系統(tǒng)技術(shù)不再適用。
Map/Reduce最早由Google研發(fā)人員提出。這種處理方式實(shí)際上是在數(shù)據(jù)存放的時(shí)候不建立索引,等實(shí)際處理數(shù)據(jù)的時(shí)候再將這些數(shù)據(jù)讀入內(nèi)存進(jìn)行排序,并可以將數(shù)據(jù)分隔在不同的機(jī)器上同時(shí)進(jìn)行處理。Map/Reduce把對(duì)數(shù)據(jù)記錄的所有操作都?xì)w結(jié)兩個(gè)步驟:其中Map對(duì)現(xiàn)有數(shù)據(jù)做一個(gè)先期處理,得到一個(gè)中間數(shù)據(jù)集,Reduce再對(duì)中間數(shù)據(jù)集進(jìn)行去重、過濾等后期處理,最后得到所要的結(jié)果。在使用Map/Reduce框架時(shí),待處理的數(shù)據(jù)先通過順序讀磁盤進(jìn)行分別處理,在內(nèi)存中排序后交由合并程序進(jìn)行后處理,盡量避免了磁盤的隨機(jī)存取操作,使得海量數(shù)據(jù)的處理效率得到快速提高。
Yahoo的Hadoop開發(fā)人員經(jīng)過試驗(yàn),在10MB/s傳輸速率和10ms的磁盤尋道時(shí)間的情況下,更新1TB數(shù)據(jù)中的100M數(shù)據(jù),如果使用基于傳統(tǒng)B樹的關(guān)系數(shù)據(jù)庫系統(tǒng),則隨機(jī)更新需要1000天,批處理更新需要100天,而使用順序讀取的排序/合并的新型數(shù)據(jù)處理方法(如Map/Reduce)只需要1天,即效率提高100倍!
如果需要處理100T的數(shù)據(jù)集,在1個(gè)節(jié)點(diǎn)上,以50MB/s的速度掃描需要23天,而平均故障間隔時(shí)間(MTBF)為3年。如果在1000個(gè)節(jié)點(diǎn)的集群上,33分鐘可以完成掃描,但MTBF為1天。這就需要新的框架來實(shí)現(xiàn)可靠性的保障,同時(shí)這種可靠性也是可擴(kuò)展和容易管理的。