Spark和Hadoop大決戰


Spark作爲數據處理的核心應用,有着重要的作用和地位,那麼spark能不能取代Hadoop而存在呢?

Spark只是分佈式計算平臺,而hadoop已經是分佈式計算、存儲、管理的生態系統。

Spark相對應的是Hadoop MapReduceSpark是可以取代MapReduce的,從而成爲Hadoop系統中不可或缺的一部分。但是爲什麼MapReduce還在被使用呢?因爲有很多現有的應用還依賴於它,它不是一個獨立的存在,已經成爲其他生態不可替代的部分,比如pighive等。

至於Spark相對於Hadoop的優勢,有以下幾點:

1)任務調度的開銷

傳統的MR系統,如Hadoop 是爲了運行長達數小時的批量作業而設計的,在某些極端情況下,提交一個任務的延遲非常高。

 spark採用了事件驅動的類庫 akka來啓動任務,可以避免進程或線程啓動,以及切換開銷。

2)數據格式和內存佈局

由於MR Schema On Read處理方式會引起較大的處理開銷。Spark抽象出分佈式內存存儲結構彈性分佈式數據集RDD,進行數據的存儲。RDD能支持粗粒度寫操作。但對於讀取操作,RDD可以精確到每條几率,這使得RDD可以用來作爲分佈式索引,Spark的特性是能夠控制數據在不同節點上的分區,用戶可以自定義分區策略,如Hash分區。Spark SparkSQLSpark的基礎上實現了列存儲和列存儲壓縮

但是分佈式計算僅僅是Hadoop的一部分,所以比較HadoopSpark實際上是SparkMapReduce的對比:

1、             更快

wKioL1h0i3uwxlSqAACdt6MKAOA222.png-wh_50

2、             更加容易使用

wKioL1h0i4bBPZdLAACC6jTV-kU633.png-wh_50

編程的時候沒有Map+Reduce函數,而且配置起來超級方便。除支持JAVA外,還支持ScalaPythonR。特別是Scala,很適合寫數據分析的程序,而MapreduceJAVA很繁瑣。

3、             巨好用的庫

wKiom1h0i5HS7hFiAACwRX79Klo813.png-wh_50

4、             運行方便

wKiom1h0i5zxhenQAAEYlGDgV3o292.png-wh_50

Spark是可以脫離hadoop運行的,比如數據可以從數據庫或者本地文件裏面抽取。不過畢竟大數據時代,大家都習慣於將Sparkhadoop通過Mesos或者YARN結合起來用;主要用HadoopHDFS,當然Hbase或者Hive這種HDFS之上的組件,Spark也支持。

因此Spark是不可以取代Hadoop的,我們要區分兩者的作用和地位,纔可以更好的把握應用。我平常的時候喜歡看“大數據cn”這些微信公衆號,裏面的一些介紹也挺不錯的,大家平時可以去看看,對於改善自己的知識架構有着重要的作用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章