Spark Streaming與Storm都可以用于進(jìn)行實(shí)時(shí)流計(jì)算。但是他們兩者的區(qū)別是非常大的。其中區(qū)別之一
就是,Spank Streaming和Stom的計(jì)算模型完全不一樣,Spark Streaming是基于RDD的,因此需要將一小段時(shí)間內(nèi)的,比如1秒內(nèi)的數(shù)據(jù),收集起來,作為一個(gè)RDD.然后再針對(duì)這個(gè)batch的數(shù)據(jù)進(jìn)行處理。而Storm卻可以做到每來一條數(shù)據(jù), 都可以立即進(jìn)行處理和計(jì)算。 因此,Spark Streaming實(shí)際上嚴(yán)格意義上來說,只能稱作準(zhǔn)實(shí)時(shí)的流計(jì)算框架,而Storm是真正意義上的實(shí)時(shí)計(jì)算框架。
此外,Storm支 持的一項(xiàng)高級(jí)特性,是Spark Streamng暫時(shí)不具備的,即Storm支持在分布式流式計(jì)算程序(Topology) 在運(yùn)行過程中,可以動(dòng)態(tài)地調(diào)整并行度。從而動(dòng)態(tài)提高并發(fā)處理能力。而SparkSreaming是無法動(dòng)態(tài)調(diào)整并行度的。
但是Spark Streaming也有其優(yōu)點(diǎn),首先Spark Streaming由于是基Fbatch進(jìn)行處理的,因此相較于Stom基于單條數(shù)據(jù)進(jìn)行處理,具有數(shù)倍甚至效十倍的吞吐量。
此外,Spark Streaming由于也身處于Spark生態(tài)圈內(nèi),因此Spark Streaming可以與Spark Core.SparkSQl.甚至是Spark MLuib Spark GraphX進(jìn)行無維整合.流式處理完的數(shù)據(jù),可以立即進(jìn)行各種購(gòu)Bmap. reduce轉(zhuǎn)換操作, 可以立即使用sqi進(jìn)行查詢,甚至可以立即使用machne laming或者圖計(jì)算算法進(jìn)行處理。這種一站式的大數(shù)據(jù)處理功能和優(yōu)勢(shì),是Slorm無法匹敵的。
因此,綜合上述來看,通常在對(duì)實(shí)時(shí)性要求特別高、而且實(shí)時(shí)數(shù)據(jù)量不穩(wěn)定,比如在白天有高峰期的情況下,可以選擇使用Storm.但是如果是對(duì)實(shí)時(shí)性要求一般,允許1秒的準(zhǔn)實(shí)時(shí)處理,而且不要求動(dòng)態(tài)調(diào)被并行度的話, 選擇Spark Streamng是更好的選擇。
Spark SQL實(shí)際上并不能完全替代Hive.因?yàn)镠ive是一種基FHDFS的數(shù)據(jù)倉(cāng)庫(kù),并且提供了基于QL模型的,針對(duì)存儲(chǔ)了大數(shù)據(jù)的數(shù)據(jù)倉(cāng)庫(kù),進(jìn)行分布式交互查詢的查詢引擎。
嚴(yán)格的來說,Spark SQL能夠替代的,是Hive的查詢引擎,而不是Hive本身, 實(shí)際上即使在生產(chǎn)環(huán)境Spark SQL也是針對(duì)Hive數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)進(jìn)行查詢,Spark本身自己是不提供存儲(chǔ)的, 自然也不可能參代Hive作為數(shù)據(jù)倉(cāng)庫(kù)的這個(gè)功能。
Spark SQL的一個(gè)優(yōu)點(diǎn),相較于Hive查詢引擎來說,就是速度快,同樣的SQL語句,可能使用Hive的量詢引擎,由于其底層基于MapReduce. 必須經(jīng)過shutfhe過程走進(jìn)盤, 因此速度是非常緩慢的。很多復(fù)雜的SQL語句。在hive中執(zhí)行都需要一個(gè)小時(shí)以上的時(shí)間。而SparkSQL由于其底層基干Spak自身的基于內(nèi)存的特點(diǎn),因此速度達(dá)到了Hive查詢引擎的數(shù)倍以上。
但是Spark SQL由于與Spark一樣。是大數(shù)據(jù)領(lǐng)域的新起的新秀,因此還不夠完善,有少量的Hive支持的高級(jí)特性,Spark SQL還不支持,導(dǎo)致Spark SQL暫時(shí)還不能完全替代Hive的查詢引擎。而只能在部分Spark SQL功能特性可以滿足需求的場(chǎng)景下,進(jìn)行使用。
而Spark SQL相較于Hive的另外一個(gè)優(yōu)點(diǎn),就是支持大量不同的數(shù)據(jù)源,包括hive.json. parquet、 jdbc等等。此外,Spark SQL由于身處Spark技術(shù)堆棧內(nèi),也是基于RDD來工作,因此可以與Spark的其他組件無縫整合使用,配合起來實(shí)現(xiàn)許多復(fù)雜的功能。比如. Spark SQL支持可以直接針對(duì)hdts文件執(zhí)行sql語句!
MapReduce能夠完成的各種離線批處理功能,以及常見算法(比如二次排序、topn等),基于Spark RDD的核心編程,都可以實(shí)現(xiàn),并且可以更好地、更容易地實(shí)現(xiàn)。而且基于Spark RDD編寫的高線批處理程序,運(yùn)行速度是MapReduce的數(shù)倍。速度上有非常明顯的優(yōu)勢(shì)。
Spark相較于MapReduce速度快的最主要原因就在于,MapReduce的計(jì)算模型太死板,必須是mapreduce模式,有時(shí)候即使完成一些諸如過減之類的操作,也必須經(jīng)過map reduce過程,這樣就必須經(jīng)過shufle過程。而MapReduce的shffle過程是最消耗性能的,因?yàn)閟huffe中間的過程必須基于進(jìn)盤來讀寫。而Spark的shuthe雖然也要基于磁盤,但是其大量ransformation操作, 比如單純的map或者h(yuǎn)iter等操作,可以直接基于內(nèi)存進(jìn)行pipeline操作,速度性能自然大大提升。
但是Spark也有其劣勢(shì)。由于Spark基于內(nèi)存進(jìn)行計(jì)算,雖然開發(fā)容易,但是真正面對(duì)大數(shù)據(jù)的時(shí)候(比如一次操作針對(duì)10億以上級(jí)別),在沒有進(jìn)行調(diào)優(yōu)的情況下,可能會(huì)出現(xiàn)各種各樣的問題,比如OOM內(nèi)存溢出等等。導(dǎo)致Spark程序可能都無法完全運(yùn)行起來,就報(bào)惜掛掉了,而MapReduce即使是運(yùn)行緩慢,但是至少可以慢慢運(yùn)行完。
此外,Spark由于是新崛起的技術(shù)新秀,因此在大數(shù)據(jù)領(lǐng)域的完善程度,肯定不如MapReduce.比如基于HBase、Hive作為離線批處理程序的輸入輸出,Spark就遠(yuǎn)設(shè)有MapReduce來的完善。實(shí)現(xiàn)起來非常麻煩。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享名稱:spark和hivestormmapreduce的比較-創(chuàng)新互聯(lián)
文章位置:http://aaarwkj.com/article30/ccojpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、虛擬主機(jī)、品牌網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、標(biāo)簽優(yōu)化、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容