Spark學習筆記0——簡單瞭解和技術架構
筆記摘抄自 [美] Holden Karau 等著的《Spark快速大數據分析》sql
什麼是Spark
Spark 是一個用來實現快速而通用的集羣計算的平臺。編程
- 擴展了普遍使用的MapReduce 計算模型
- 可以在內存中進行計算
- 一個統一的框架簡單而低耗地整合各類處理流程
- 接口很是豐富
技術架構和軟件棧
Spark 的核心是一個對由不少計算任務組成的、運行在多個工做機器或者是一個計算集羣上的應用進行調度、分發以及監控的計算引擎服務器
Spark 項目還包含多個緊密集成的組件,這些組件關係密切而且能夠相互調用網絡

各組件間密切結合的設計原理的優勢:架構
- 軟件棧中全部的程序庫和高級組件均可以從下層的改進中獲益
- 只須要一套軟件系統,運行整個軟件棧的代價變小了
- 可以構建出無縫整合不一樣處理模型的應用(例如機器學習和數據分析同時進行)
Spark Core
- Spark Core 實現了Spark 的基本功能,包含任務調度、內存管理、錯誤恢復、與存儲系統交互等模塊
- Spark Core 中包含了對 RDD 的 API 定義
Spark SQL
Spark 用來操做結構化數據的程序包框架
- 可使用 SQL 和 Apache Hive 版本的SQL 方言(HQL)來查詢數據
- 支持多種數據源(好比Hive 表、Parquet 以及JSON 等)
- 支持開發者將SQL 和傳統的 RDD 編程的數據操做方式相結合,使用 Python、Java 或 Scala 在單個應用中同時使用 SQL 和複雜的數據分析
Spark Streaming
Spark Streaming 是Spark 提供的對實時數據進行流式計算的組件機器學習
- Spark Streaming 提供了用來操做數據流的API,而且與Spark Core 中的RDD API 高度對應
- 從底層設計來看,Spark Streaming 支持與 Spark Core 同級別的容錯性、吞吐量以及可伸縮性
MLlib
一個提供常見的機器學習(ML)功能的程序庫分佈式
- MLlib 提供了不少種機器學習算法
- 提供了一些更底層的機器學習原語(包括一個通用的梯度降低優化算法)
P.s. 全部這些方法都被設計爲能夠在集羣上輕鬆伸縮的架構oop
GraphX
GraphX 是用來操做圖(好比社交網絡的朋友關係圖)的程序庫
- 能夠進行並行的圖計算
- 擴展了Spark 的RDD API,能用來建立一個頂點和邊都包含任意屬性的有向圖
- 支持針對圖的各類操做以及一些經常使用圖算法
集羣管理器
- Spark 支持在各類集羣管理器(cluster manager)上運行,包括Hadoop YARN、Apache Mesos
- Spark 自帶的一個簡易調度器,叫做獨立調度器
受衆
- 數據科學家——數據科學應用
- 工程師——數據處理應用
起源和發展
