有在碰大數據的人一定都聽過hadoop和spark,但常常會不清楚他們差別在哪裡,他們彼此其實是互補的,所以還是要看個人需求。在了解的過程中,我有看到一些蠻好的說明,在這邊做一些重點整理。
-
Spark因為其處理數據的方式不一樣,會比MapReduce快上很多。Spark的批處理速度比MapReduce快近10倍,內存中的數據分析速度則快近100倍。
-
MapReduce是分步對數據進行處理的:從集群中讀取數據,進行一次處理,將結果寫到集群,從集群中讀取更新後的數據,進行下一次的處理,將結果寫到集群。
-
Spark會在內存中以接近“實時”的時間完成所有的數據分析:從集群中讀取數據,完成所有必須的分析處理,將結果寫回集群。
Hadoop Map Reduce的計算框架
Hadoop mapreduce在執行運算時,需要將中間產生的數據,儲存在硬碟中。然而磁碟I/O往往是效能的瓶頸,因此會有讀寫資料延遲的問題。
Spark in-memory的計算框架
Spark是基於記憶體內的計算框架。Spark在運算時,將中間產生的資料暫存在記憶體中,因此可以加快執行速度。尤其需要反覆操作的次數越多,所需讀取的資料量越大,則越能看出Spark的效能。Spark在記憶體內執行程式。
參考資料
1.http://hadoopspark.blogspot.tw/2015/12/apache-spark.html
2.https://chu888chu888.gitbooks.io/hadoopstudy/content/Content/chapter1303.html