一、Spark概述
? ? ? ? Apache Spark 是一個快速的, 多用途的集群計算系統, 相對于 Hadoop MapReduce 將中間結果保存在磁盤中, Spark 使用了內存保存中間結果, 能在數據尚未寫入硬盤時在內存中進行運算。Spark 是一個計算框架,可以用來代替Hadoop中的MapReduce計算框架。
二、Spark的作用與核心
? ? ? 由來:Spark 是為了解決 MapReduce 等過去的計算系統無法在內存中保存中間結果的問題,
? ? ? 核心:Spark 的核心是 RDDs, RDDs 不僅是一種計算框架, 也是一個可以容錯且并行的數據結構, 它可以讓用戶顯式的將中間結果數據集保存在內中, 并且通過控制數據集的分區來達到數據存放處理最優化。
三、Spark組成
1、spark-core
? ? ? ?Spark 最核心的功能是 RDDs(彈性分布式數據集), RDDs 存在于?spark-core
?這個包內, 這個包也是 Spark 最核心的包.
2、Spark SQL
(1)Spark SQL 在 spark-core 基礎之上帶出了一個名為 DataSet 和 DataFrame 的數據抽象化的概念
(2)Spark SQL 提供了在 Dataset 和 DataFrame 之上執行 SQL 的能力
(3)Spark SQL 提供了 DSL, 可以通過 Scala, Java, Python 等語言操作 DataSet 和 DataFrame
(4)它還支持使用 JDBC/ODBC 服務器操作 SQL 語言
3、Spark Streaming
(1)Spark Streaming 充分利用?
spark-core
?的快速調度能力來運行流分析(2)它截取小批量的數據并可以對之運行 RDD Transformation
(3)它提供了在同一個程序中同時使用流分析和批量分析的能力
4、MLlib?
? ? ? ?MLlib 是 Spark 上分布式機器學習的框架,可以使用許多常見的機器學習和統計算法, 簡化大規模機器學習
5、GraphX
? ? ? GraphX 是分布式圖計算框架, 提供了一組可以表達圖計算的 API, GraphX 還對這種抽象化提供了優化運行。
四、Spark的四種運行模式
1、Local
? ? ? ?用于本地開發和測試。在這種模式下,Spark 程序將?master
?設置為?local
?或者?local[n]
,使得所有的代碼都在同一個 JVM 中運行。
2、Standalone
? ? ? ? 這是 Spark 自帶的集群管理模式,不依賴外部資源管理器。在這種模式下,一個 Spark 集群由 Master 和 Worker 進程組成,其中 Master 負責資源分配管理,Worker 負責運行 Executor。
3、YARN
? ? ? ? 在這種模式下,Spark 應用程序運行在 YARN集群上,YARN 負責管理整個集群資源。YARN 模式下又分為兩種部署模式:yarn-client
?和?yarn-cluster
。yarn-client
?中 Driver 運行在本地客戶端,而?yarn-cluster
?中 Driver 運行在 YARN 集群中。
4、Mesos
? ? ? ?在這種模式下,Spark 的資源管理從 Standalone 的 Master 轉移到 Mesos Manager 中。Mesos 是一種資源調度管理框架,負責為運行在其上的 Spark 提供服務。