Spark與Hadoop大數據計算框架區別是什麼?ApacheSpark專爲大規模數據處理而設計的快速通用的計算引擎,而Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。Hadoop和Spark都是大數據框架,但各自存在的目的不一樣。Hadoop實質上是一個分佈式數據基礎設施,將巨大的數據集分派到一個由普通計算機組成的集羣中的多個節點進行存儲,也有計算處理功能。Spark是一個專門用來對那些分佈式存儲的大數據進行處理的工具並不會進行分佈式數據的存儲。編程
Spark是什麼?服務器
Spark是一種通用的大數據計算框架,正如傳統大數據技術Hadoop的MapReduce、Hive引擎,以及Storm流式實時計算引擎等。Spark包含大數據領域常見的各類計算框架:如SparkCore用於離線計算,SparkSQL用於交互式查詢,SparkStreaming用於實時流式計算,SparkMLlib用於機器學習,SparkGraphX用於圖計算。架構
Spark主要用於大數據的計算,而Hadoop之後主要用於大數據的存儲(好比HDFS、Hive、HBase等),以及資源調度(Yarn)。框架
Hadoop是什麼?機器學習
Hadoop是項目總稱,由HDFS和MapReduce組成。HDFS是GoogleFileSystem(GFS)的開源實現。MapReduce是GoogleMapReduce的開源實現。ApacheHadoop軟件庫是一個容許使用簡單編程模型跨計算機集羣處理大型數據集合的框架,其設計的初衷是將單個服務器擴展成上千個機器組成的一個集羣爲大數據提供計算服務,其中每一個機器都提供本地計算和存儲服務。分佈式
Hadoop與Spark都是大數據計算框架,但二者各有本身的優點,那麼Spark與Hadoop的區別以下:ide
一、編程方式工具
Hadoop的MapReduce在計算數據時,計算過程必需要轉化爲Map和Reduce兩個過程,從而難以描述複雜的數據處理過程;而Spark的計算模型不侷限於Map和Reduce操做,還提供了多種數據集的操做類型,編程模型比MapReduce更加靈活。oop
二、數據存儲性能
Hadoop的MapReduce進行計算時,每次產生的中間結果都是存儲在本地磁盤中;而Spark在計算時產生的中間結果存儲在內存中。
三、數據處理
Hadoop在每次執行數據處理時,都須要從磁盤中加載數據,致使磁盤的I/O開銷較大;而Spark在執行數據處理時,只須要將數據加載到內存中,以後直接在內存中加載中間結果數據集便可,減小了磁盤的1O開銷。
四、數據容錯
MapReduce計算的中間結果數據保存在磁盤中,且Hadoop框架底層實現了備份機制,從而保證了數據容錯;一樣SparkRDD實現了基於Lineage的容錯機制和設置檢查點的容錯機制,彌補了數據在內存處理時斷電丟失的問題。在Spark與Hadoop的性能對比中,較爲明顯的缺陷是Hadoop中的MapReduce計算延遲較高,沒法勝任當下爆發式的數據增加所要求的實時、快速計算的需求。
使用HadoopMapReduce進行計算時,每次計算產生的中間結果都須要從磁盤中讀取並寫入,大大增長了磁盤的I/O開銷,而使用Spark進行計算時,須要先將磁盤中的數據讀取到內存中,產生的數據再也不寫入磁盤,直接在內存中迭代處理,這樣就避免了從磁盤中頻繁讀取數據形成的沒必要要開銷。
Spark是一種與Hadoop類似的開源集羣計算環境,不一樣之處使Spark在某些工做負載方面表現得更加優越,Spark啓用了內存分佈數據集,除了可以提供交互式查詢外還能夠優化迭代工做負載。Spark是在Scala語言中實現,將Scala用做其應用程序框架。與Hadoop不一樣Spark和Scala可以緊密集成,其中的Scala能夠像操做本地集合對象同樣輕鬆地操做分佈式數據集。