Spark原理與機制初探

2021-09-27 00:01:37 字數 1907 閱讀 7286

1.spark

作為spark生態系統的核心,spark主要提供基於記憶體計算的功能,不僅包含hadoop的計算模型mapreduce,還包含很多其他的api,如reducebykey、groupbykey、foreach、join和filter等。spark將資料抽象為rdd,有效地擴充了spark程式設計模型,使spark成為多面手,能讓互動式查詢、流處理、機器學習和圖計算無縫交叉融合,極大地擴充套件了spark的業務應用場景,同時spark使用函式式程式設計scale,使程式設計更簡潔高效。

shark是為了將hive應用移植到spark平台下面而出現的資料倉儲。shark在hql(一般將hive上對sql支援的語言成為hql)方面重用了hive的hql解析、邏輯計畫翻譯、執行計畫優化等邏輯,可以認為僅將底層物理執行計畫從hadoop的mapreduce作業轉移到spark作業,此外還依賴hive metastore和hive serde。這樣做會導致執行計畫過程過於依賴hive,不利於新增新的優化策略,因此為了減少對hive本身框架的依賴,引入了spark sql。

spark sql僅依賴hql parser、hive metostore和hive serde,即說明在解析sql生成抽象語法數(abstract syntax tree,ast)後的部分都是由spark sql自身的calalyst負責(圖中所示spark sqlyu hive之間的關係),利用scala模式匹配等函式式語言的特性,讓catalyst開發的執行計畫優化策略比hive更簡潔。除了hql以外,spark sql還內建了乙個精簡的sql parser,以及一套scale特定領域語言(domain specific language,dsl)。也就是說,如果只是使用spark sql內建的sql方言或scale dsl對原生rdd物件進行關係查詢,使用者在開發spark應用時完全不需要依賴hive的任何東西,因而日後的發展趨勢重點在spark sql,對shark的支援會逐漸淡化。

spark sql從spark1.3開始支援提供乙個抽象的程式設計架構dataframes,能充當分布式sql查詢引擎。dataframe本質就是一張關係型資料庫中的表,但是底層有很多方面的優化,他能從多種資料來源中轉化而來,例如結構性資料檔案、hive表、外部資料庫或者已經存在的rdd。

spark streaming是基於spark的上層應用框架,使用內建api,能像寫批處理檔案一樣編寫流處理任務,易於使用,它還提供良好的容錯特性,能在結點宕機情況下同時恢復丟失的工作和操作狀態。

在處理時間方面,spark streaming是基於時間片的準實時處理,能達到妙級延遲,吞吐量比storm大,此外還能和spark mlib聯合使用,構造強大的流狀態執行即席(ad-hoc)查詢和實時推薦系統。

4.graphx

graphx是基於spark的上層分布式圖計算框架,提供了類似goole圖演算法引擎pregel的功能,主要處理社交網路等結點和邊模型的問題,因為spark能很好地支付迭代計算,故處理效率優勢明顯。graphx的較新版本支援pagerank、svd++和三角形計算等演算法。目前國內的**技術部在graphx方面的應用成果很多。

5.mllib

mllib是spark生態系統在機器學習領域的重要應用,它充分發揮spark迭代計算的優勢,比傳統mapreduce模型演算法塊一百倍以上。

mllib實現了邏輯回歸、線性svm、隨即森林、k-means、奇異值分解等多種傳統機器學習的演算法,充分利用rdd的迭代優勢,能對大規模資料應用機器學習模型,並能與spark streaming、spark sql進行協作開發應用,讓機器學習演算法在基於大資料的**、推薦和模式識別等方面應用更廣泛。

Spark 原理初探

driver 執行main方法並建立sparkcontext的程序 sparkcontext 是spark執行時的上下文環境,其實就是幫助客戶端和clustermanager集群管理器進行互動的,如通訊,資源申請,任務分配,任務監控 executor 是執行在worker工作節點上的jvm程序 負責...

Spark之Shuffle機制和原理

shuffle就是對資料進行重組,由於分布式計算的特性和要求,在實現細節上更加繁瑣和複雜 在mapreduce框架,shuffle是連線map和reduce之間的橋梁,map階段通過shuffle讀取資料並輸出到對應的reduce 而reduce階段負責從map端拉取資料並進行計算。在整個shuff...

spark 機制原理自問自答

本文主要收錄spark學習和工作中思考的問題。1 當spark task failed,什麼情況下task重計算,什麼情況下stage重計算?答 如果task失敗是因為shuffle output files lost,則dagscheduler會對stage重提交計算 如果不是因為shuffle ...