1.spark簡介
spark特性
- 快速性
spark通過使用先進的DAG調度器、查詢優化器和物理執行引擎,可以高性能地進行批量及流式處理。使用邏輯回歸算法進行叠代計算,spark比hadoop速度快100多倍。
- 簡單易用
spark支持多種編程語言,比如Java、Scala、Python、R及SQL。
spark提供了超過80多個高級算子操作,可以很便捷地構建並行計算應用。
- 通用性
spark構建了一個完善的生態棧,將批量計算、交互式計算、流式計算、機器學習及圖計算整合到一個統一的框架體系中。
- 處處運行
spark可以運行在standalone、YARN、Mesos、Kubernetes及EC2多種調度平臺上。
另外,spark可以接入多種數據源,比如HDFS、Alluxio、HBase、Cassandra、Hive及本地文件。
spark生態棧
Spark Core
Spark Core實現了Spark的基本功能,包括任務調度、內存管理、錯誤恢復、與存儲系統交互等模塊。Spark Core還包含了對彈性分布式數據集(resilient distributed dataset,簡稱RDD)的API定義。RDD表示分布在多個計算節點上並行操作的元素集合,是Spark的核心抽象模型。
Spark SQL
Spark SQL是Spark用來處理結構化數據的子框架。Spark SQL支持多種數據源,比如Hive表、Parquet及JSON等。Spark SQL可使用SQL或Hive的SQL方言(HQL)查詢數據,還支持將SQL和RDD相互轉換。
Spark Streaming
Spark Streaming是Spark提供的對實時數據進行流式計算的組件。Spark Streaming提供了操作數據流的API,同時還提供了高級別的容錯性、吞吐量及可伸縮性。
MLlib
MLlib是一個提供常見機器學習(ML)功能的程序庫。MLlib提供了很多種機器學習算法,包括分類、回歸、聚類、協同過濾等,還提供了模型評估、數據導入及更底層的機器學習原語(包括通用的梯度下降優化算法)。
Graphx
Graphx是用來操作圖(比如社交網絡的朋友關系圖)的程序庫,可進行並行的圖計算。Graphx擴展了RDD API,能用來創建一個頂點和邊都包含任意屬性的有向圖。Graphx支持對圖的各種操作(比如進行圖分隔的subgraph和操作所有頂點的mapVertices),及一些常用算法(比如PageRank和三角計數)。
集群管理器
Spark設計為可高效地在一個計算節點到數千個計算節點之間伸縮計算,所以為了獲取最大靈活性,spark支持在各種集群管理器上運行,包括Hadoop YARN、Apache Mesos及Spark自帶的獨立調度器等。
spark用戶及用途
spark的使用者主要分為兩大目標人群:數據分析師和工程師。這兩大人群使用spark的典型用例不一致,大致分為兩類:數據分析和數據處理。
數據分析
數據分析師就是主要負責分析數據並建模的人。他們具備SQL、統計、預測建模(機器學習)等方面技能,有一定使用Python、Matlab或R編程的能力。
Spark通過一系列組件支持數據分析任務。Spark shell提供python和scala接口來進行交互式數據分析。Spark SQL提供獨立的SQL shell來使用SQL探索數據,也可以通過標準的Spark程序或Spark shell進行SQL查詢。MLlib程序庫進行機器學習和數據分析。Spark還支持調用R或Matlab外部程序。
數據處理
工程師就是使用Spark開發數據處理應用的軟件開發者。他們具備軟件工程概念(封裝、接口設計及面向對象思想),能使用工程技術設計軟件系統。
Spark為開發用於集群並行執行的程序提供了捷徑。不需要開發者關註分布式問題、網絡通信及程序容錯性。為工程師提供足夠的接口實現常見的任務及對應用監控、審查和性能調優。
spark簡史
-
2009?,Spark誕生於UCBerkeley的AMP實驗室
-
2010?,Spark正式對外開源
-
2012-10-15,Spark?0.6.0發布。
-
大範圍的性能改進,增加了一些新特性,並對Standalone部署模式進行了簡化
-
2013-02-27,Spark?0.7.0發布
-
增加了更多關鍵特性,例如:Python API、Spark Streaming的alpha版本等
-
2013-06-21,Spark接受進入Apache孵化器
-
2013-09-17,Spark?0.8.0發布
-
支持Scala2.9/YARN2.2/Standalone部署模式下調度的高可用性,shuffle優化等
-
2014-01-24,Spark?0.9.0發布
-
增加了GraphX,機器學習新特性,流式計算新特性,核心引擎優化(外部聚合、加強對YARN的支持)等
-
2014-05-26,Spark?1.0.0發布
-
增加了Spark SQL、MLlib、GraphX和Spark Streaming都增加了新特性並進行了優化。Spark核心引擎還增加了對安全YARN集群的支持
-
2014-09-03,Spark?1.1.0發布
-
Spark核心API及Streaming,Python,SQL,GraphX和MLlib的bug修復
-
2014-12-10,Spark?1.2.0發布
-
Spark核心API及Streaming,Python,SQL,GraphX和MLlib的bug修復
-
2015-03-06,Spark?1.3.0發布
-
該版本發布的最大亮點是新引入的DataFrame?API,對於結構型的DataSet,它提供了更方便更強大的操作運算。。除了DataFrame之外,還值得關註的一點是Spark?SQL成為了正式版本,這意味著它將更加的穩定,更加的全面。
-
2015-06-03,Spark?1.4.0發布
-
該版本將 R API 引入 Spark,同時提升了 Spark 的核心引擎和 MLlib ,以及 Spark?Streaming 的可用性
-
2015-09-09,Spark?1.5.0發布
-
Spark 1.5.0是1.x線上的第6個發行版。這個版本共處理了來自230+contributors和80+機構的1400+個patches。
-
Spark 1.5的許多改變都是圍繞在提升Spark的性能、可用性以及操作穩定性。
-
Spark 1.5.0焦點在Tungsten項目,它主要是通過對低層次的組建進行優化從而提升Spark的性能。
-
Spark 1.5版本為Streaming增加了operational特性,比如支持backpressure。另外比較重要的更新就是新增加了一些機器學習算法和工具,並擴展了Spark R的相關API。
-
2015-12-22,Spark?1.6.0發布
-
該版本含了超過1000個patches,在這裏主要展示三個方面的主題:新的Dataset?API,性能提升(讀取Parquet 50%的性能提升,自動內存管理,streaming state management十倍的性能提升),以及大量新的機器學習和統計分析算法。
-
在Spark1.3.0引入DataFrame,它可以提供high-level functions讓Spark更好地處理數據結構和計算。這讓Catalyst optimizer 和Tungsten execution engine自動加速大數據分析。發布DataFrame之後開發者收到了很多反饋,其中一個主要的是大家反映缺乏編譯時類型安全。為了解決這個問題,Spark采用新的Dataset API (DataFrame API的類型擴展)。Dataset API擴展DataFrame API支持靜態類型和運行已經存在的Scala或Java語言的用戶自定義函數。對比傳統的RDD API,Dataset API提供更好的內存管理,特別是在長任務中有更好的性能提升。
-
2016-07-20,Spark?2.0.0發布
-
該版本主要更新APIs,支持SQL 2003,支持R UDF ,增強其性能。300個開發者貢獻了2500補丁程序
-
2016-12-16,Spark?2.1.0發布
-
這是 2.x 版本線的第二個發行版。此發行版在為Structured Streaming進入生產環境做出了重大突破,Structured Streaming 現在支持了event time watermarks了並且支持Kafka0.10
-
此外,此版本更側重於可用性,穩定性和優雅(polish),並解決了1200多個tickets
-
2017-07-01,Spark?2.2.0發布
-
這是 2.x 系列的第三個版本。此版本移除了?Structured Streaming 的實驗標記(experimental tag),意味著已可以放心在線上使用。
-
該版本的更新內容主要針對的是系統的可用性、穩定性以及代碼潤色。包括:
- Core 和 Spark SQL 的?API?升級和性能、穩定性改進,比如支持從 Hive metastore 2.0/2.1 中讀取數據;支持解析多行的 JSON 或 CSV 文件;移除對 Java 7 的支持;移除對?Hadoop 2.5 及更早版本的支持 等
- SparkR 針對現有的 Spark SQL 功能添加了更廣泛的支持,比如 Structured Streaming 為 R 語言提供的 API ;R 語言支持完整的 Catalog API ;R 語言支持 DataFrame checkpointing 等
-
2018-02-23,Spark?2.3.0發布
-
這是 2.x 系列中的第四個版本。此版本增加了對 Structured Streaming 中的 Continuous Processing 以及全新的 Kubernetes Scheduler 後端的支持
-
其他主要更新包括新的 DataSource 和 Structured Streaming v2 API,以及一些 PySpark 性能增強。
-
此外,此版本繼續改進項目的可用性、穩定性,並持續潤色代碼。
- now
1.spark簡介