市面上有一些初學(xué)者的誤解,他們拿spark和hadoop比較時(shí)就會(huì)說,Spark是內(nèi)存計(jì)算,內(nèi)存計(jì)算是spark的特性。請(qǐng)問在計(jì)算機(jī)領(lǐng)域,mysql,redis,ssh框架等等他們不是內(nèi)存計(jì)算嗎?依據(jù)馮諾依曼體系結(jié)構(gòu),有什么技術(shù)的程序不是在內(nèi)存中運(yùn)行,需要數(shù)據(jù)從硬盤中拉取,然后供cpu進(jìn)行執(zhí)行?所有說sprk的特點(diǎn)是內(nèi)存計(jì)算相當(dāng)于什么都沒有說。那么spark的真正特點(diǎn)是什么?拋開spark的執(zhí)行模型的方式,它的特點(diǎn)無非就是多個(gè)任務(wù)之間數(shù)據(jù)通信不需要借助硬盤而是通過內(nèi)存,大大提高了程序的執(zhí)行效率。而hadoop由于本身的模型特點(diǎn),多個(gè)任務(wù)之間數(shù)據(jù)通信是必須借助硬盤落地的。那么spark的特點(diǎn)就是數(shù)據(jù)交互不會(huì)走硬盤。只能說多個(gè)任務(wù)的數(shù)據(jù)交互不走硬盤,但是sprk的shuffle過程和hadoop一樣仍然必須走硬盤的。
本文是翻譯的出處 https://0x0fff.com/spark-misconceptions/。
原文和作者一起討論:http://www.cnblogs.com/intsmaze/p/7197420.html
微信:intsmaze
誤解一:Spark是一種內(nèi)存技術(shù)
大家對(duì)Spark最大的誤解就是spark一種內(nèi)存技術(shù)。其實(shí)沒有一個(gè)Spark開發(fā)者正式說明這個(gè),這是對(duì)Spark計(jì)算過程的誤解。Spark是內(nèi)存計(jì)算沒有錯(cuò)誤,但是這并不是它的特性,只是很多專家在介紹spark的特性時(shí),簡(jiǎn)化后就成了spark是內(nèi)存計(jì)算。
什么樣是內(nèi)存技術(shù)?就是允許你將數(shù)據(jù)持久化在RAM中并有效處理的技術(shù)。然而Spark并不具備將數(shù)據(jù)數(shù)據(jù)存儲(chǔ)在RAM的選項(xiàng),雖然我們都知道可以將數(shù)據(jù)存儲(chǔ)在HDFS, HBase等系統(tǒng)中,但是不管是將數(shù)據(jù)存儲(chǔ)在磁盤還是內(nèi)存,都沒有內(nèi)置的持久化代碼。它所能做的事就是緩存數(shù)據(jù),而這個(gè)并不是數(shù)據(jù)持久化。已經(jīng)緩存的數(shù)據(jù)可以很容易地被刪除,并且在后期需要時(shí)重新計(jì)算。