Spark VS Hadoop

1、   Spark VSHadoop有哪些異同點?

       Hadoop:分佈式批處理計算,強調批處理,常用於數據挖掘、分析

       Spark:是一個基於內存計算的開源的集羣計算系統,目的是讓數據分析更加快速, Spark 是一種與 Hadoop 相似的開源集羣計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啓用了內存分佈數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。

Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕鬆地操作分佈式數據集。

儘管創建 Spark 是爲了支持分佈式數據集上的迭代作業,但是實際上它是對 Hadoop 的補充,可以在 Hadoop 文件系統中並行運行。通過名爲Mesos的第三方集羣框架可以支持此行爲。Spark 由加州大學伯克利分校 AMP 實驗室 (Algorithms,Machines,and People Lab) 開發,可用來構建大型的、低延遲的數據分析應用程序。

雖然 Spark 與 Hadoop 有相似之處,但它提供了具有有用差異的一個新的集羣計算框架。首先,Spark 是爲集羣計算中的特定類型的工作負載而設計,即那些在並行操作之間重用工作數據集(比如機器學習算法)的工作負載。爲了優化這些類型的工作負載,Spark 引進了內存集羣計算的概念,可在內存集羣計算中將數據集緩存在內存中,以縮短訪問延遲.

在大數據處理方面相信大家對hadoop已經耳熟能詳,基於GoogleMap/Reduce來實現的Hadoop爲開發者提供了map、reduce原語,使並行批處理程序變得非常地簡單和優美。Spark提供的數據集操作類型有很多種,不像Hadoop只提供了Map和Reduce兩種操作。比如map,filter, flatMap,sample, groupByKey, reduceByKey, union,join, cogroup,mapValues, sort,partionBy等多種操作類型,他們把這些操作稱爲Transformations。同時還提供Count,collect, reduce, lookup, save等多種actions。這些多種多樣的數據集操作類型,給上層應用者提供了方便。各個處理節點之間的通信模型不再像Hadoop那樣就是唯一的Data Shuffle一種模式。用戶可以命名,物化,控制中間結果的分區等。可以說編程模型比Hadoop更靈活.


    2、Spark在容錯性方面是否比其他工具更有優越性?

       從Spark的論文《Resilient Distributed Datasets: AFault-TolerantAbstraction for In-Memory Cluster Computing》中沒看出容錯性做的有多好。倒是提到了分佈式數據集計算,做checkpoint的兩種方式,一個是checkpoint data,一個是loggingthe updates。貌似Spark採用了後者。但是文中後來又提到,雖然後者看似節省存儲空間。但是由於數據處理模型是類似DAG的操作過程,由於圖中的某個節點出錯,由於lineage chains的依賴複雜性,可能會引起全部計算節點的重新計算,這樣成本也不低。他們後來說,是存數據,還是存更新日誌,做checkpoint還是由用戶說了算吧。相當於什麼都沒說,又把這個皮球踢給了用戶。所以我看就是由用戶根據業務類型,衡量是存儲數據IO和磁盤空間的代價和重新計算的代價,選擇代價較小的一種策略。取代給中間結果進行持久化或建立檢查點,Spark會記住產生某些數據集的操作序列。因此,當一個節點出現故障時,Spark會根據存儲信息重新構造數據集。他們認爲這樣也不錯,因爲其他節點將會幫助重建。


   3、Spark對於數據處理能力和效率有哪些特色?

    Spark提供了高的性能和大數據處理能力,使得用戶可以快速得到反饋體驗更好。另一類應用是做數據挖掘,因爲Spark充分利用內存進行緩存,利用DAG消除不必要的步驟,所以比較合適做迭代式的運算。而有相當一部分機器學習算法是通過多次迭代收斂的算法,所以適合用Spark來實現。我們把一些常用的算法並行化用Spark實現,可以從R語言中方便地調用,降低了用戶進行數據挖掘的學習成本。

Spark配有一個流數據處理模型,與Twitter的 Storm框架相比,Spark採用了一種有趣而且獨特的辦法。Storm基本上是像是放入獨立事務的管道,在其中事務會得到分佈式的處理。相反,Spark採用一個模型收集事務,然後在短時間內(我們假設是5秒)以批處理的方式處理事件。所收集的數據成爲他們自己的RDD,然後使用Spark應用程序中常用的一組進行處理。作者聲稱這種模式是在緩慢節點和故障情況下會更加穩健,而且5秒的時間間隔通常對於大多數應用已經足夠快了。這種方法也很好地統一了流式處理與非流式處理部分。


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