Spark 於 2009 年誕生於加州大學伯克利分校 AMPLab,2013 年被捐贈給 Apache 軟件基金會,2014 年 2 月成爲 Apache 的頂級項目。相對於 MapReduce 的批處理計算,Spark 能夠帶來上百倍的性能提高,所以它成爲繼 MapReduce 以後,最爲普遍使用的分佈式計算框架。node
Apache Spark 具備如下特色:git
Term(術語) | Meaning(含義) |
---|---|
Application | Spark 應用程序,由集羣上的一個 Driver 節點和多個 Executor 節點組成。 |
Driver program | 主運用程序,該進程運行應用的 main() 方法而且建立 SparkContext |
Cluster manager | 集羣資源管理器(例如,Standlone Manager,Mesos,YARN) |
Worker node | 執行計算任務的工做節點 |
Executor | 位於工做節點上的應用進程,負責執行計算任務而且將輸出數據保存到內存或者磁盤中 |
Task | 被髮送到 Executor 中的工做單元 |
執行過程:github
Spark 基於 Spark Core 擴展了四個核心組件,分別用於知足不一樣領域的計算需求。算法
Spark SQL 主要用於結構化數據的處理。其具備如下特色:架構
Spark Streaming 主要用於快速構建可擴展,高吞吐量,高容錯的流處理程序。支持從 HDFS,Flume,Kafka,Twitter 和 ZeroMQ 讀取數據,並進行處理。框架
Spark Streaming 的本質是微批處理,它將數據流進行極小粒度的拆分,拆分爲多個批處理,從而達到接近於流處理的效果。機器學習
MLlib 是 Spark 的機器學習庫。其設計目標是使得機器學習變得簡單且可擴展。它提供瞭如下工具:分佈式
GraphX 是 Spark 中用於圖形計算和圖形並行計算的新組件。在高層次上,GraphX 經過引入一個新的圖形抽象來擴展 RDD(一種具備附加到每一個頂點和邊緣的屬性的定向多重圖形)。爲了支持圖計算,GraphX 提供了一組基本運算符(如: subgraph,joinVertices 和 aggregateMessages)以及優化後的 Pregel API。此外,GraphX 還包括愈來愈多的圖形算法和構建器,以簡化圖形分析任務。函數
更多大數據系列文章能夠參見 GitHub 開源項目: 大數據入門指南工具