白話大數據 | Spark和Hadoop到底誰更厲害?

要想搞清楚spark跟Hadoop到底誰更厲害,首先得明白spark究竟是什麼鬼。

通過以前的介紹你們應該很是瞭解什麼是Hadoop了(不瞭解的點擊這裏:白話大數據 | hadoop到底是什麼鬼),簡單的說:Hadoop是由HDFS分佈式文件系統和MapReduce編程模型等部分組成的分佈式系統架構。

而Spark呢,更像是Hadoop MapReduce這樣的編程模型。編程

其實要講清楚Spark,內存和磁盤這兩個概念是必需要弄清楚的,相信在座的老爺太太們都懂,我仍是簡單說一下吧。內存和磁盤二者都是存儲設備, 但內存儲存的是咱們正在使用的資源,磁盤儲存的是咱們暫時用不到的資源。磁盤就像這個倉庫,而內存就像進出倉庫的通道,其實也不徹底是這樣啦,小編主要想跟你們說的就是倉庫很大,要塞滿它很難,反觀通道很小就很容易塞滿。服務器

Spark和MapReduce的相同之處是都不帶有磁盤文件系統,均可以依附HDFS做爲分佈式(磁盤)文件系統架構

因此說Spark與Hadoop並沒有衝突,甚至能夠與Hdoop融爲一體)。分佈式

不一樣之處挺多的,但主要是Spark有一個分佈式內存文件系統,能夠對內存中的文件進行分佈處理。那麼小編先舉一個例子讓你們看看Spark和MapReduce在處理問題方式上有什麼區別。oop

Mapreduce每個步驟發生在內存中但產生的中間值都會儲存在磁盤裏,下一步操做時又會將這個中間值調用到內存中,如此循環,直到最終完成。大數據

Spark的每一個步驟也是發生在內存之中但產生的中間值會直接進入下一個步驟,直到全部的步驟完成以後纔會將最終結果保存進磁盤。因此在使用Spark作數據分析能少進行不少次相對沒有意義的讀寫,節省大量的時間,少數步驟可能感受不出區別,可是步驟不少時,Spark的優點就體現出來了。
你們能夠看出來了,MapReduce就是一個穩重的媽媽,一步一步來,有條不紊。Spark就像一個急躁的媽媽,一個步驟還沒完成呢,就開始進行下一個步驟了,固然,這也要求操做臺足夠大,放得下這麼多東西。spa

固然,任何技術都是有得必有失的,雖然Spark很快,但Spark運做時會佔用大量計算機內存,而小編以前說過,內存空間相比於磁盤空間,那是很小很小的,這就要求使用者去購買具備較大內存的服務器佈置集羣,而這樣的服務器是很昂貴的。因爲內存的限制,即便是用昂貴的服務器,Spark也不能太好地處理很大批量的文件,而這些問題都是MapReduce不用考慮的。小編記得有大神舉過很棒的例子,MapReduce就像一把大砍刀,什麼都能砍,儘管速度有點不盡人意;Spark就像一把剔骨刀,很鋒利速度很快,但具備侷限性,不能砍太大的東西。內存

相關文章
相關標籤/搜索