Spark入門系列之Spark 簡介

Spark是一種基於內存計算的大數據並行計算框架,用於構建大型的低延遲的數據分析程序。

1、Spark生態系統的特點:

    運行速度快:使用DAD執行引擎,支持循壞數據流與內存計算;

      容易使用:支持scala、java、python、R語言,還可使用spark-shell 交互式編程方式;

 通用性強:spark生態系統提供完整的技術棧,包括SQL查詢,流式計算,

運行模式多樣:可部署獨立集羣,hadoop集羣,EC2等,支持訪問HDFS,HBase,Hive等數據源。

2、spark執行的特點

      DAG:task------>taskSet--------->stage---------->Job

中間結果輸出:spark將工作流抽象成DAG,將多個stage的任務串聯或者並行執行,而無需將stage的中間結果輸出到磁盤;

數據格式和內存佈局:spark將分佈式內存存儲結構抽象成RDD,簡單理解,RDD即爲分佈式數據。spark可以控制數據再不同節點上分區,同時用戶也可以自定義分區策略;

執行策略:spark內核可以將job劃分爲不同的stage,不同的stage之間可以並行計算。而又依賴的stage之間通過shuffle進行連接,通過shuffle,相同的分組數據聚合到統一節點處理。

任務調度開銷:spark採用時間驅動的類庫AKKA來啓動任務。

3、spark的優勢

相比較Hadoop框架,hadoop框架的缺點如下:

MR模型,表達能力有限:MR操作雖然簡化了編程方式,同時也限制了操作的擴展,註定難以描述複雜的數據處理過程,並且MR處理速度極慢;

磁盤IO開銷大:MR編程模型中 ,每一個task階段,計算結果都將落盤,頻繁的IO讀寫導致性能問題;

延遲高:MR編程模型中,每個階段,IO開銷導致計算延遲,同時下一階段的輸入必須依賴上一階段的結果,導致延遲。

基於hadoop的上述缺陷,spark的優勢如下:

計算速度快:spark計算原理,基於MR模型,但是提供了更多的操作集,比MR更加靈活,速度更加快速;

迭代效率高:spark基於內存的計算模型,省去了磁盤IO的開銷,使得迭代計算具有更高的效率,尤其對於機器學習對計算效率高的算法庫;

基於DAG的任務調度機制,比hadoop中的MR迭代機制更高效。

同樣,spark也有自身的缺陷:

RDD的存儲結構,適合粗粒度的並行計算,不適合細粒度的計算,如異步更新的計算;

spark streaming的原理是將批處理劃分爲短小的批處理,只是準實時計算,而不是真正的實時計算框架,而storm纔是真正的實時流計算;

在圖計算領域,graphLab也比spark GraphX在一定的硬件處理環境下,更勝一籌。

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