1. 程式人生 > >1.spark簡介

1.spark簡介

sch 統一 one 調用 工程技術 -i 模型 探索 有向圖

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簡介