目錄
- Spark介紹
- Spark生態組件介紹
- Spark特點
- Spark適合場景
- Spark與hadoop
一、Spark介紹
Apache Spark是一個圍繞速度、易用性和復雜分析構建的大數據處理框架,最初在2009年由加州大學伯克利分校的AMPLab開發,並於2010年成為Apache的開源項目之一,與Hadoop和Storm等其他大數據和MapReduce技術相比,Spark有如下優勢:
- Spark提供了一個全面、統一的框架用於管理各種有着不同性質(文本數據、圖表數據等)的數據集和數據源(批量數據或實時的流數據)的大數據處理的需求
- 官方資料介紹Spark可以將Hadoop集群中的應用在內存中的運行速度提升100倍,甚至能夠將應用在磁盤上的運行速度提升10倍
二、Spark生態組件介紹
參考:https://www.cnblogs.com/broadview/p/6247979.html
- Spark Core:提供了多種資源調度管理,通過內存計算、有向無環圖(DAG)等機制保證分布式計算的快速,並引入了RDD的抽象保證數據的高容錯性。尤其是定義RDD的API、操作以及這兩者上的動作。其他Spark的庫都是構建在RDD和Spark Core之上的
- Spark SQL:提供通過Apache Hive的SQL變體Hive查詢語言(HiveQL)與Spark進行交互的API。每個數據庫表被當做一個RDD,Spark SQL查詢被轉換為Spark操作。引入了新的SchemaRDD,同時內嵌了Catalyst查詢優化框架
- BlinkDB: 是一個用於在海量數據上運行交互式SQL查詢的大規模並行查詢引擎,用戶使用時要在查詢精度和查詢時間上做權衡;
- Spark Streaming:通過將流數據離散化處理對數據流進行實時處理和控制。Spark Streaming允許程序能夠像普通RDD一樣處理實時數據
- MLBase是Spark生態系統中專注於機器學習的組件,分為4個部署:MLRuntime, MLlib, MLI和ML Optimizer。MLlib:一個常用機器學習算法庫,算法被實現為對RDD的Spark操作。這個庫包含可擴展的學習算法,比如分類、回歸等需要對大量數據集進行迭代的操作。
- GraphX:控制圖、並行圖操作和計算的一組算法和工具的集合。GraphX擴展了RDD API,包含控制圖、創建子圖、訪問路徑上所有頂點的操作
三、Spark特點
運行速度快:基於內存計算,引入DAG引擎,同時進行了數據本地性、調度優化和傳輸優化等原因
通用性強:批處理、流處理與交互式分析的一體化,適用場景廣泛(大數據分析統計,實時數據處理,圖計算及機器學習)
易用性好:編寫簡單,支持80種以上的高級算子,支持多種語言,數據源豐富,可部署在多種集群中
容錯性高,快速故障恢復機制:Spark引進了彈性分布式數據集RDD (Resilient Distributed Dataset) 的抽象,它是分布在一組節點中的只讀對象集合,這些集合是彈性的,如果數據集一部分丟失,則可以根據“血統”(即充許基於數據衍生過程)對它們進行重建。另外在RDD計算時可以通過CheckPoint來實現容錯,而CheckPoint有兩種方式:CheckPoint Data,和Logging The Updates,用戶可以控制采用哪種方式來實現容錯。
隨處運行:運行各種持久層原生數據讀寫,能以local及多種cluster模式運行
四、Spark適合場景
復雜的批量處理(Batch Data Processing),偏重點在於處理海量數據的能力,至於處理速度可忍受,通常的時間可能是在數十分鍾到數小時;
基於歷史數據的交互式查詢(Interactive Query),通常的時間在數十秒到數十分鍾之間
基於實時數據流的數據處理(Streaming Data Processing),通常在數百毫秒到數秒之間
五、Spark與Hadoop