官术网_书友最值得收藏!

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還包含越來越多的圖算法和構建器,以簡化圖形分析任務。

主站蜘蛛池模板: 内丘县| 海兴县| 祁东县| 临夏县| 无极县| 察雅县| 饶河县| 郯城县| 常熟市| 怀集县| 开封市| 江永县| 崇礼县| 富裕县| 开鲁县| 九江市| 平邑县| 扬中市| 乌拉特中旗| 康乐县| 成都市| 炉霍县| 汨罗市| 白山市| 兴隆县| 阳朔县| 临沂市| 临西县| 堆龙德庆县| 开远市| 京山县| 建宁县| 永济市| 自治县| 赣州市| 剑川县| 定陶县| 松原市| 新邵县| 乌鲁木齐县| 关岭|