一、Spark是什么?
快速且通用的集群計算平台
二、Spark的特點:
- 快速:Spark擴充流行的Mapreduce計算模型,是基於內存的計算
- 通用:Spark的設計容納了其它分布式系統擁有的功能,批處理、迭代式計算、交互查詢和流處理等,降低了維護成本
- 高度開放:Spark提供Python、Java、Scala、SQL的API和豐富的內置庫,Spark和其它的大數據工作整合得很好,包括hadoop、Kafka
三、Spark的組件
1、Spark Core
包含基本功能,包括任務調度、內存管理、容錯機制。內部定義了RDDS(彈性分布式數據集),提供了很多APIs來創建和操作這些RDDs。
應用場景:為其它組件提供底層的服務。
2、Spark SQL
Spark處理結構化數據的庫,像Hive SQL、MySQL一樣。
應用場景:企業中用來做報表統計
3、Spark Streaming
實時數據流處理組件,類似Storm。Spark Streaming提供API來操作實時流數據。
應用場景:企業中用來從Kafka接收數據做實時統計
4、MLlib
一個包含通用機器學習功能的包,Machine learning lib。包含分類、聚類、回歸等,還包括模型評估和數據導入。MLlib提供的上面這些方法,都支持集群上的橫向擴展。
5、Graphx
處理圖的庫(例如社交網絡圖),並進行圖的並行計算,像Spark Streaming,Spark SQL一樣,它繼承了RDD API。提供了各種圖的操作,和常用的圖算法,例如RangeRank算法
應用場景:圖計算
6、Cluster Manager
集群管理,Spark自帶一個集群管理是單獨調度器。常見的集群管理包括:Hadoop YARN、Apache Mesos
四、緊密集成的優點
Spark底層優化,基於Spark底層的組件,也得到相應的優化。緊密集成,節省了各個組件使用時的部署,測試時間。向Spark增加新的組件時,其它組件可立即享用新組件的功能。
五、Spark和Hadoop比較
Hadoop應用場景:離線處理、對及時性要求不高
Spark應用場景:時效性要求高、機器學習等領域