Spark是一個用來實現快速而通用的集羣計算的平臺。算法
Spark項目包含多個緊密集成的組件。Spark的核心是一個對由不少計算任務組成的,運行在多個工做機器或者是一個計算集羣上的應用進行調度,分發以及監控的計算引擎。Sark核心引擎有着速度快和通用的特色,所以Spark支持爲各類不一樣應用場景專門設計的高級組件,這些組件關係密切而且能夠互相調用。編程
Spark各組件密切結合的設計原理的優勢:軟件棧中全部的程序庫和高級組件均可以從下層改進中獲益以及可以構建出無縫整合不一樣處理模型的應用。服務器
Spark各個組件以下圖:機器學習
分別對各個組件進行介紹:分佈式
Spark Core實現了Spark的基本功能,包括任務調度,內存管理,錯誤恢復,與存儲系統交互等模塊。Spark Core中還包含了對彈性分佈式數據集(RDD)的API定義。RDD表示分佈在多個計算節點上能夠並行操做的元素集合,是Spark主要的編程抽象。Spark Core提供了建立和操做這些集合的多個API。oop
Spark SQL是Spark用來操做結構化數據的程序包。經過Spark SQL,可使用SQL或者Hive的HQL來查詢數據。Spark SQL支持多種數據源,還支持開發者將SQL和傳統的RDD編程的數據操做方式相結合。學習
Spark Streaming是Spark提供的對實時數據進行流式計算的組件。好比生產環境中的網頁服務器日誌,Spark Streaming提供了用來操做數據流的API,而且與Spark Core中的RDD API高度對應。Spark Streaming還支持與Spark Core同級別的容錯性,吞吐量以及可伸縮性。spa
Spark中的一個包含常見的機器學習功能的程序庫,叫作MLlib。MLlib提供了不少種機器學習算法,包括分類,迴歸,聚類,協同過濾等,還提供了模型評估,數據導入等額外的支持功能。設計
Spark設計爲能夠高效地在一個計算節點到數千個計算節點之間伸縮計算。爲了實現這樣的要求,同時得到最大靈活性,Spark支持在各類集羣管理器上運行,最多見的就是Hadoop YARN,Spark自帶的一個簡易調度器,叫作獨立調度器。日誌