Spark Core概述

Spark Core是spark的核心與基礎,實現了Spark的基本功能,包含任務調度,內存管理,錯誤恢復與存儲系統交互等模塊
Spark Core中包含了對Spark核心API——RDD API(彈性分佈式數據集)的定義:RDD表示分佈在多個計算節點上可以並行操作的元素集合,是spark的核心抽象

Spark Core提供Spark最基礎與最核心的功能,主要包括以下功能:
(1)SparkContext:
通常而言,Driver Application的執行與輸出都是通過SparkContext來完成的。在正式提交Application之前,首先需要初始化SparkContext。SparkContext隱藏了網絡通信、分佈式部署、消息通信、存儲能力、計算能力、緩存、測量系統、文件服務、Web服務等內容,應用程序開發者只需要使用SparkContext提供的API完成功能開發。SparkContext內置的DAGScheduler負責創建Job,將DAG中的RDD劃分到不同的Stage,提交Stage等功能。內置的TaskScheduler負責資源的申請,任務的提交及請求集羣對任務的調度等工作。
(2)存儲體系:
Spark優先考慮使用各節點的內存作爲存儲,當內存不足時纔會考慮使用磁盤,這極大地減少了磁盤IO,提升了任務執行的效率,使得Spark適用於實時計算、流式計算等場景。此外,Spark還提供了以內存爲中心的高容錯的分佈式文件系統Tachyon供用戶進行選擇。Tachyon能夠爲Spark提供可靠的內存級的文件共享服務。
(3)計算引擎:
計算引擎由SparkContext中的DAGScheduler、RDD以及具體節點上的Executor負責執行的Map和Reduce任務組成。DAGScheduler和RDD雖然位於SparkContext內部,但是在任務正式提交與執行之前會將Job中的RDD組織成有向無環圖(DAG),並對Stage進行劃分,決定了任務執行階段任務的數量、迭代計算、shuffle等過程。
(4)部署模式:
由於單節點不足以提供足夠的存儲和計算能力,所以作爲大數據處理的Spark在SparkContext的TaskScheduler組件中提供了對Standalone部署模式的實現和Yarn、Mesos等分佈式資源管理系統的支持。通過使用Standalone、Yarn、Mesos等部署模式爲Task分配計算資源,提高任務的併發執行效率。

Spark的幾大子框架包括:
(1)Spark SQL:
首先使用SQL語句解析器(SqlParser)將SQL轉換爲語法樹(Tree),並且使用規則執行器(RuleExecutor)將一系列規則(Rule)應用到語法樹,最終生成物理執行計劃並執行。其中,規則執行器包括語法分析器(Analyzer)和優化器(Optimizer)。
(2)Spark Streaming:
用於流式計算。Spark Streaming支持Kafka、Flume、Twitter、MQTT、ZeroMQ、Kinesis和簡單的TCP套接字等多種數據輸入源。輸入流接收器(Receiver)負責接入數據,是接入數據流的接口規範。Dstream是Spark Streaming中所有數據流的抽象,Dstream可以被組織爲Dstream Graph。Dstream本質上由一系列連續的RDD組成。
(3)GraphX:
Spark提供的分佈式圖計算框架。GraphX主要遵循整體同步並行(bulk Synchronous parallel,BSP)計算模式下的Pregel模型實現。GraphX提供了對圖的抽象Graph,Graph由頂點(Vertex),邊(Edge)及繼承了Edge的EdgeTriplet三種結構組成。GraphX目前已經封裝了最短路徑,網頁排名,連接組件,三角關係統計等算法的實現,用戶可以選擇使用。
(4)MLlib:
Spark提供的機器學習框架。機器學習是一門設計概率論、統計學、逼近論、凸分析、算法複雜度理論等多領域的交學科。MLlib目前已經提供了基礎統計、分析、迴歸、決策樹、隨機森林、樸素貝葉斯、保序迴歸、協同過濾、聚類、維數縮減特徵提取與轉型、頻繁模式挖掘、預言模型標記語言、管道等多種數理統計、概率論、數據挖掘方面的數學算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章