一圖看懂Hadoop中的MapReduce與Spark的區別:從單機資料系統到分散式資料系統經歷了哪些?

slowlydance2me發表於2022-12-05

今日博主思考了一個問題:Hadoop中的MapReduce與Spark他們之間到底有什麼關係?

直到我看到了下面這張圖

廢話不多說先上圖?

我們知道,單機資料系統,在本地主機上針對資料有單機本地儲存操作(localFS)和單機計算操作(SQL)

這是在資料量比較小方便在一臺主機就完成任務的情況。

那當我們的業務需要的資料足夠大,一臺機器完全應付不過來的時候應該怎麼辦?

我們很容易想到,既然一臺機器辦不到的事情,我們就交給10臺機器、100臺機器去辦。

沒錯!

當我們的資料量足夠龐大時,我們需要多臺機器協同完成業務,此時我們就需要將資料一份份分成足夠讓一臺機器能處理執行的小部分,佈置給多臺機器共同完成,這就是所謂的分散式資料系統

Hadoop就是為這樣的業務場景服務的

 

Apache Hadoop是一款支援資料密集型分散式應用程式並以Apache 2.0許可協議釋出的開源軟體框架,有助於使用許多計算機組成的網路來解決資料、計算密集型的問題。基於MapReduce計算模型,它為大資料的分散式儲存與處理提供了一個軟體框架。所有的Hadoop模組都有一個基本假設,即硬體故障是常見情況,應該由框架自動處理。————wikipedia

 

Apache Hadoop的核心模組分為儲存和計算模組,前者被稱為Hadoop分散式檔案系統(HDFS),後者即MapReduce計算模型。Hadoop框架先將檔案分成資料塊並分散式地儲存在叢集的計算節點中,接著將負責計算任務的程式碼傳送給各節點,讓其能夠並行地處理資料。這種方法有效利用了資料區域性性,令各節點分別處理其能夠訪問的資料。與傳統的超級計算機架構相比,這使得資料集的處理速度更快、效率更高。

其中HDFS分散式檔案系統做到了利用多臺機器的分散式檔案儲存,而MapReduce則實現了對資料的計算,而我們還需要一個對他們實現排程管理的“幫手”——Yarn

Mapreduce的實現需要自己編寫計算框架,這很麻煩。

所以為什麼不能有像單機資料系統的SQL一樣方便的操作呢?

於是Hive就誕生了。

那,Spark又是怎麼回事?

Spark對標的是Hadoop中的計算模組MapReduce,而一般情況下Spark會比MapReduce快2~3倍,

這是因為,MapReduce是基於磁碟的計算,而Spark是基於記憶體的計算。

而Spark中也有像Hive一樣為了方便而誕生的只用寫SQL語句就能完成資料處理的方式——Spark SQL

在Spark中還有一些格外的功能,例如針對機器學習使用的Spark MLib、針對流計算的Spark streaming以及針對圖計算的Spark GraphX等等

 

以上就是Hadoop中的MapReduce與Spark 的區別,以及他們實現為了實現結構化資料處理進行的SQL實現。

 

相關文章