- Spark大數據分析實戰
- 張偉洋
- 1156字
- 2021-03-26 22:18:41
2.3 Spark主要組件
如圖2-3所示,Spark是由多個組件構成的軟件棧,Spark的核心(Spark Core)是一個對由很多計算任務組成的、運行在多個工作機器或者一個計算集群上的應用進行調度、分發以及監控的計算引擎。

圖2-3 Spark主要組件
在Spark Core的基礎上,Spark提供了一系列面向不同應用需求的組件,例如Spark SQL結構化處理和MLlib機器學習等。這些組件關系密切并且可以相互調用,這樣可以方便地在同一應用程序中組合使用。
Spark自帶一個簡易的資源調度器,稱為獨立調度器(Standalone)。若集群中沒有任何資源管理器,則可以使用自帶的獨立調度器。當然,Spark也支持在其他的集群管理器上運行,包括Hadoop YARN、Apache Mesos等。
Spark本身并沒有提供分布式文件系統,因此Spark的分析大多依賴于HDFS,也可以從HBase和Amazon S3等持久層讀取數據。
下面分別對Spark的各個核心組件進行講解。
1.Spark Core
Spark Core是Spark的核心模塊,主要包含兩部分功能:一是負責任務調度、內存管理、錯誤恢復、與存儲系統交互等;二是其包含對彈性分布式數據集(Resilient Distributed Dataset,RDD)的API定義。RDD表示分布在多個計算節點上可以并行操作的元素集合,是Spark主要的編程抽象。Spark Core提供了創建和操作這些集合的多個API。
關于RDD,將在第3章詳細講解。
2.Spark SQL
Spark SQL是一個用于結構化數據處理的Spark工具包,提供了面向結構化數據的SQL查詢接口,使用戶可以通過編寫SQL或基于Apache Hive的HiveQL來方便地處理數據。當然,Spark SQL也可以查詢數據倉庫Hive中的數據,相當于數據倉庫的查詢引擎,提供了很強大的計算速度。
Spark SQL還支持開發者將SQL語句融入Spark應用程序開發過程中,使用戶可以在單個應用中同時進行SQL查詢和復雜的數據分析。
3.Spark Streaming
Spark Streaming是Spark提供的對實時數據進行流式計算的組件(比如生產環境中的網頁服務器日志,以及網絡服務中用戶提交的狀態更新組成的消息隊列,都是數據流),它是將流式的計算分解成一系列短小的批處理作業,支持對實時數據流進行可伸縮、高吞吐量、容錯的流處理。數據可以從Kafka、Flume、Kinesis和TCP套接字等許多來源獲取,可以對數據使用map、reduce、join和window等高級函數表示的復雜算法進行處理。最后,可以將處理后的數據發送到文件系統、數據庫和實時儀表盤。事實上,也可以將Spark的機器學習和圖形處理算法應用于數據流。
Spark Streaming提供了用來操作數據流的API,并且與Spark Core中的RDD API高度對應,可以幫助開發人員高效地處理數據流中的數據。從底層設計來看,Spark Streaming支持與Spark Core同級別的容錯性、吞吐量以及可伸縮性。
Spark Streaming通過將流數據按指定時間片累積為RDD,然后將每個RDD進行批處理,進而實現大規模的流數據處理。
4.MLlib
MLlib是Spark的機器學習(Machine Learning,ML)庫。它的目標是使機器學習具有可擴展性和易用性。其中提供了分類、回歸、聚類、協同過濾等常用機器學習算法,以及一些更加底層的機器學習原語。
5.GraphX
GraphX是Spark中圖形和圖形并行計算的一個新組件,可以用其創建一個頂點和邊都包含任意屬性的有向多重圖。此外,GraphX還包含越來越多的圖算法和構建器,以簡化圖形分析任務。
- SQL Server 2012數據庫技術與應用(微課版)
- Java Data Science Cookbook
- Effective Amazon Machine Learning
- iOS and OS X Network Programming Cookbook
- 3D計算機視覺:原理、算法及應用
- 企業級數據與AI項目成功之道
- 大數據架構商業之路:從業務需求到技術方案
- 金融商業算法建模:基于Python和SAS
- PostgreSQL指南:內幕探索
- 數據庫原理與應用
- Visual FoxPro數據庫技術基礎
- 從Lucene到Elasticsearch:全文檢索實戰
- 數據挖掘算法實踐與案例詳解
- 數據時代的品牌智造
- 高效使用Redis:一書學透數據存儲與高可用集群