Spark是一個基于內存的開源計算框架,于2009年誕生于加州大學伯克利分校AMPLab(AMP:Algorithms,Machines,People),它最初屬于伯克利大學的研究性項目,后來在2010年正式開源,并于 2013 年成為了 Apache 基金項目,到2014年便成為 Apache 基金的頂級項目,該項目整個發展歷程剛過六年時間,但其發展速度非常驚人。
正由于Spark來自于大學,其整個發展過程都充滿了學術研究的標記,是學術帶動Spark核心架構的發展,如彈性分布式數據集(RDD,resilient distributed datasets)、流處理(Spark streaming)、機器學習(MLlib)、SQL分析(Spark SQL)和圖計算(GraphX)。
一、Spark是什么
Spark,是一種“One Stack to rule them all”的大數據計算框架,是一種基于內存計算的框架,是一種通用的大數據快速處理引擎。
這一站式的計算框架,包含了Spark RDD(這也是Spark Core用于離線批處理)、Spark SQL(交互式查詢)、Spark Streaming(實時流計算)、MLlib(機器學習)、GraphX(圖計算)等重要處理組件。
二、Spark的發展歷史
2009年誕生于美國加州大學伯克利分校AMP 實驗室,
2010年通過BSD許可協議開源發布,
2013年捐贈給Apache軟件基金會并切換開源協議到切換許可協議至 Apache2.0,
2014年2月,Spark 成為 Apache 的頂級項目
2014年11月, Spark的母公司Databricks團隊使用Spark刷新數據排序世界記錄
Spark 成功構建起了一體化、多元化的大數據處理體系。在任何規模的數據計算中, Spark 在性能和擴展性上都更具優勢。
Hadoop 之父Doug Cutting 指出:Use of MapReduce engine for Big Data projects will decline, replaced by Apache Spark (大數據項目的MapReduce 引擎的使用將下降,由Apache Spark 取代)
Hadoop 商業發行版本的市場領導者Cloudera 、HortonWorks 、MapR 紛紛轉投Spark,并把Spark 作為大數據解決方案的首選和核心計算引擎。
2014 年的如此Benchmark 測試中, Spark 秒殺Hadoop ,在使用十分之一計算資源的情況下,相同數據的排序上, Spark 比Map Reduce 快3 倍! 在沒有官方PB 排序對比的情況下,首次將S park 推到了IPB 數據(十萬億條記錄) 的排序,在使用190 個節點的情況下,工作負載在4 小時內完成, 同樣遠超雅虎之前使用3800 臺主機耗時16 個小時的記錄。
2015年6月, Spark 最大的集群來自騰訊–8000 個節點, 單個Job 最大分別是阿里巴巴和Databricks–1PB ,震撼人心!同時,Spark的Contributor 比2014 年漲了3 倍,達到730 人:總代碼行數也比2014 年漲了2 倍多,達到40 萬行。
IBM 于2015 年6 月承諾大力推進Apache Spark 項目, 并稱該項目為:以數據為主導的,未來十年最重要的新的開源項目。這-承諾的核心是將Spark 嵌入IBM 業內領先的分析和商務平臺,并將Spark 作為一項服務,在IBMB平臺上提供給客戶。IBM 還將投入超過3500 名研究和開發人員在全球10余個實驗室開展與Spark 相關的項目,并將為Spark 開源生態系統無償提供突破性的機器學習技術–IBM SystemML。同時,IBM 還將培養超過100 萬名Spark 數據科學家和數據工程師。
2016 年,在有“計算界奧運會”之稱的國際著名Sort Benchmark全球數據排序大賽中,由南京大學計算機科學與技術系PASA 大數據實驗室、阿里巴巴和Databricks 公司組成的參賽因隊NADSort,以144美元的成本完成lOOTB 標準數據集的排序處理,創下了每TB 數據排序1.44美元成本的最新世界紀錄,比2014 年奪得冠軍的加州大學圣地亞哥分校TritonSort團隊每TB 數據4.51美元的成本降低了近70%,而這次比賽依舊使用Apache Spark 大數據計算平臺,在大規模并行排序算法以及Spark 系統底層進行了大量的優化,以盡可能提高排序計算性能并降低存儲資源開銷,確保最終贏得比賽。
在FullStack 理想的指引下,Spark 中的Spark SQL 、SparkStreaming 、MLLib 、GraphX 、R 五大子框架和庫之間可以無縫地共享數據和操作, 這不僅打造了Spark 在當今大數據計算領域其他計算框架都無可匹敵的優勢, 而且使得Spark 正在加速成為大數據處理中心首選通用計算平臺。
三、Spark的優點
Spark之所以這么受關注,主要是因為其有與其他大數據平臺不同的特點,主要如下。
1.輕量級快速處理
與 Hadoop 的 MapReduce 相比, Spark 基于內存的運算是 MapReduce 的 100 倍.基于硬盤的運算也要快 10 倍以上.
Spark 實現了高效的 DAG 執行引擎, 可以通過基于內存來高效處理數據流
2.易于使用
Spark 支持 Scala, Java, Python, R 和 SQL 腳本, 并提供了超過 80 種高性能的算法, 非常容易創建并行 App
?而且 Spark 支持交互式的 Python 和 Scala 的 shell, 這意味著可以非常方便地在這些 shell 中使用 Spark 集群來驗證解決問題的方法, 而不是像以前一樣 需要打包, 上傳集群, 驗證等. 這對于原型開發非常重要.
3. 通用、支持復雜查詢
Spark 結合了SQL, Streaming和復雜分析.
??Spark 提供了大量的類庫, 包括 SQL 和 DataFrames, 機器學習(MLlib), 圖計算(GraphicX), 實時流處理(Spark Streaming) .
??可以把這些類庫無縫的柔和在一個 App 中.
??減少了開發和維護的人力成本以及部署平臺的物力成本.
4. 可融合性強
Spark 可以非常方便的與其他開源產品進行融合.
??比如, Spark 可以使用 Hadoop 的 YARN 和 Appache Mesos 作為它的資源管理和調度器, 并且可以處理所有 Hadoop 支持的數據, 包括 HDFS, HBase等.
5.實時的流處理
對比MapReduce只能處理離線數據,Spark還能支持實時流計算。Spark Streaming主要用來對數據進行實時處理,當然在YARN之后Hadoop也可以借助其他的工具進行流式計算。對于Spark Streaming,著名的大數據產品開發公司Cloudera曾經對Spark Streaming有如下評價:
- 簡單、輕量且具備功能強大的API,Sparks Streaming允許用戶快速開發流應用程序。
- 容錯能力強,不像其他的流解決方案,比如使用Storm需要額外的配置,而Spark無需額外的代碼和配置,因為直接使用其上層應用框架Spark Streaming就可以做大量的恢復和交付工作,讓Spark的流計算更適應不同的需求。
- 集成性好,為流處理和批處理重用了同樣的代碼,甚至可以將流數據保存到歷史數據中(如HDFS)。
6.活躍和不斷壯大的社區
Spark起源于2009年,當下已有超過50個機構730個工程師貢獻過代碼,與2014年6月相比2015年代碼行數擴大了近三倍(數據源于Spark Summit 2015公布的數據),這是個驚人的增長
*、本文參考
Spark官網
深入淺出,一文讓你了解什么是Spark