說到大數(shù)據(jù),很多人都會(huì)提及Hadoop 與 Apache Spark。Hadoop解決了大數(shù)據(jù)的可靠存儲(chǔ)和處理問題。但因?yàn)槠浔旧淼墓ぷ髁鞒桃话逡谎郏簧瞄L靜態(tài)存儲(chǔ)對象的批式處理,有自身的局限和不足。Spark應(yīng)運(yùn)而生,受到追捧,甚至被認(rèn)為是大數(shù)據(jù)的未來,將會(huì)替代Hadoop。
所以在這里簡要總結(jié)下各自的優(yōu)劣勢,并從五個(gè)方面比較二者的區(qū)別。看看Spark是否能宣布Hadoop的“死刑”?
Hadoop和ApacheSpark雖然都是大數(shù)據(jù)框架,但他們并不真正服務(wù)于同樣的目的。 Hadoop是一個(gè)分布式數(shù)據(jù)基礎(chǔ)設(shè)施:可以支持一個(gè)或多個(gè)服務(wù)器,在集群內(nèi)跨多個(gè)節(jié)點(diǎn),分配大量數(shù)據(jù)集合。這意味著如果你要處理大數(shù)據(jù),有了它就足以解決大數(shù)據(jù)的存儲(chǔ)和處理問題,不需要購買昂貴的定制化硬件及維護(hù)服務(wù)了。 它還也可以索引和跟蹤數(shù)據(jù),使大數(shù)據(jù)處理和分析更有效。 另一方面,Spark是一個(gè)數(shù)據(jù)處理工具,可以做分布式數(shù)據(jù)收集,但不能做分布式存儲(chǔ)。
Hadoop不僅是個(gè)存儲(chǔ)組件,還包括Hadoop分布式文件系統(tǒng)和被稱作MapReduce的處理組件。所以,人家自身功能很多,你不一定非要用Spark配合。 相反地,不搭建在Hadoop上,也可以單獨(dú)使用Spark。但是,由于Spark不自帶文件管理系統(tǒng),還得結(jié)合HDFS或者基于云的數(shù)據(jù)平臺(tái)。 其實(shí),Spark是專為完善Hadoop而生,因此有人認(rèn)為在未來會(huì)替代Hadoop。但是,大部分人目前通常是采用二者配合來做的方式搭建,更希望二者可以協(xié)作起來,更好地發(fā)揮各自的效用。
Spark通常比MapReduce快得多,因?yàn)樘幚頂?shù)據(jù)的方式不一樣。 在MapReduce按部就班的處理時(shí),Spark可以對整個(gè)數(shù)據(jù)集中處理。 有數(shù)據(jù)科學(xué)家這樣形容MapReduce的工作流程:從集群讀取數(shù)據(jù)——執(zhí)行一個(gè)操作——將結(jié)果寫入集群——從集群中讀取更新的數(shù)據(jù)——執(zhí)行下一步操作——寫未來結(jié)果到集群……” 另一方面,Spark是基于內(nèi)存計(jì)算,在完成完整的數(shù)據(jù)分析操作上,也是接近實(shí)時(shí)處理的。它的工作流程可以這樣形容:從集群中讀取數(shù)據(jù)——執(zhí)行所有必要的分析操作——將結(jié)果寫入集群,完成。Spark比MapReduce在批處理上速度快得高達(dá)10倍,基于內(nèi)存計(jì)算分析上快100倍。
如果數(shù)據(jù)操作和報(bào)告需求大多是靜態(tài)的, MapReduce的處理風(fēng)格完全可以勝任了,你只需耐心等待它的批處理模式來做就行。但是,如果你需要對流數(shù)據(jù)做分析,比如工廠里的傳感器數(shù)據(jù),或要處理多個(gè)操作的應(yīng)用程序,這種情況選擇Spark更合適。 例如,大多數(shù)機(jī)器學(xué)習(xí)算法需要多個(gè)操作。 Spark常見的應(yīng)用場景還有:實(shí)時(shí)營銷活動(dòng)、在線產(chǎn)品推薦、網(wǎng)絡(luò)安全分析和機(jī)器的日志監(jiān)控等。
Hadoop對系統(tǒng)故障具備天然抵抗力,因?yàn)樯衔乃f的,它的工作流程非常穩(wěn)扎穩(wěn)打:在執(zhí)行每個(gè)操作后都會(huì)把數(shù)據(jù)寫入磁盤,自然便于恢復(fù)。而Spark,采用類似的方式,具有內(nèi)置彈性。 具體來說,其數(shù)據(jù)對象存儲(chǔ)在集群數(shù)據(jù)里的,彈性分布式數(shù)據(jù)集上(即RDD,Spark的核心。它具備像MapReduce等數(shù)據(jù)流模型的容錯(cuò)特性,并且允許開發(fā)人員在大型集群上執(zhí)行基于內(nèi)存的計(jì)算)。這些數(shù)據(jù)對象可以存儲(chǔ)在內(nèi)存或磁盤上,當(dāng)系統(tǒng)報(bào)錯(cuò)時(shí)候,RDD可以幫助全面恢復(fù)。
綜上所說,可以看出,二者各有千秋,場景不同所選方案就會(huì)不同。不過,大多數(shù)人更愿意看到1+1>2的效果。