1.1 Spark 是什么
Spark是一個用來實現(xiàn)快速(通用)集群計算平臺落恼。擴展了MapReduce計算模型,高效支持更多的計算模型绸硕,包含交互式查詢和流處理钠署。Spark可以在內(nèi)存上進行運算勾怒,所以速度很快婆排,即使在磁盤中運算声旺,也比MapReduce 快。通過在一個統(tǒng)一法人框架下支持不同的分布式計算段只,Spark使我們可以簡單而低耗地把各種處理流程整合在一起腮猖。
1.2 一個大一統(tǒng)的軟件棧
Spark的核心是一個對由很多計算任務(wù)組成的、運行在多個工作機器或者一個計算集群上的應(yīng)用進行調(diào)度赞枕、分發(fā)以及監(jiān)控的計算引擎澈缺。
各組件密切結(jié)合的設(shè)計原理優(yōu)點:1)軟件棧中所有程序庫和高級組件都可以從下層的改進中獲益;2)運行整個軟件棧的代價變锌簧簟姐赡;3)可以無縫整合不同處理模型的應(yīng)用。
1.2.1 Spark Core
Spark Core實現(xiàn)了Spark的基本功能柠掂,包含任務(wù)調(diào)度项滑、內(nèi)存管理、錯誤恢復(fù)涯贞、與存儲系統(tǒng)交互等模塊枪狂。
RDD(彈性分布式數(shù)據(jù)集)表示分布在多個計算節(jié)點上可以并行操作的元素集合。
1.2.2 Spark SQL
SparkSQL是Spark用來操作結(jié)構(gòu)化數(shù)據(jù)的程序包宋渔。SparkSQL還支持開發(fā)者將SQL和傳統(tǒng)的RDD編程的數(shù)據(jù)操作方式相結(jié)合州疾。
1.2.3 Spark Streaming
Spark Streaming是spark提供對實時數(shù)據(jù)進行流式計算的組件。Spark Streaming提供用來操作數(shù)據(jù)流的API皇拣,并且與Spark Core中RDD API高度對應(yīng)严蓖。從底層設(shè)計來看,Spark Streaming支持與Spark Core同級別的容錯性氧急、吞吐量一級可伸縮性谈飒。
1.2.4 MLlib
MLlib提供很多種機器學(xué)習算法,包括分類态蒂、回歸、聚類费什、協(xié)同過濾等钾恢,還包括模型評估、數(shù)據(jù)導(dǎo)入等額外的支持功能鸳址。
1.2.5 GraphX
專門用來操作圖的程序庫瘩蚪,可以對圖進行并行計算及其他的各種操作。
1.2.6 集群管理器
Spark支持在各種集群管理器上運行稿黍,包括Hadoop YARN疹瘦、Apache Mesos,以及Spark自帶的一個簡易調(diào)度器(獨立調(diào)度器)