原创 圖 - DFS深度優先搜索和BFS廣度優先搜索

圖的概念   圖是一種非線性表數據結構;圖中的元素叫頂點(vertex),圖中一個頂點可以與任意其他頂點建立連接關係,我們把這種建立的關係叫做邊(edge),和頂點相連的邊的條數叫度(degree);在有向圖中又分爲入度和出度,

原创 SparkStreaming — 架構原理分析

Spark Streaming運行原理   首先我們看一下Spark Streaming的運行流程,和之前Spark Core一樣都是先創建Context,這裏創建的是StreamingContext。Spark Streami

原创 SparkCore — CacheManager持久化原理

CacheManager持久化原理   CacheManager的主要功能就是在進行RDD計算的時候,會先從持久化的RDD中讀取當前計算RDD需要的數據。   下面是RDD在進行計算的時候,讀取數據的流程:   RDD在計

原创 SparkCore — checkpoint機制

checkpoint的原理及其使用場景   checkpoint是Spark提供的一個高級的功能,對於特別複雜的Spark程序而言,從一開始的RDD開始到最後結束,有很多transformation操作,並且執行時間很長,假如這

原创 SparkCore — CacheManager源碼分析

CacheManager源碼分析   CacheManager主要發生在利用RDD的數據執行算子的時候,也就是在Task端ShuffleWriter的write方法寫數據的時候,它傳入了RDD的iterator方法作爲參數。RD

原创 SparkCore — BlockManager寫數據,以及緩存淘汰機制

BlockManager寫數據   上一篇博客,分析了BlockManager讀取數據,主要分爲本地拉取和遠程拉取。現在我們分析一下寫數據,主要是調用doPut()方法: doPut() private def doPut(

原创 Spark — Executor底層數據管理組件BlockManager

BlockManager的運行過程   爲了方便的講解運行過程,如下圖所示:   上圖中將BlockManager運行過程中比較重要的組件畫出來了,其中每個BlockManager中有比較重要的四個組件,DiskStore負責

原创 Spark — BlockManager讀取數據

BlockManager的讀取數據操作   BlockManager讀取數據分爲從本地讀取和從遠程節點上拉取,我們這裏分別分析一下這兩種方式。首先分析從本地拉取數據的方法doGetLocal(),在進行分析這個方法之前,我們先看

原创 Spark — BlockManagerMaster信息註冊

BlockManagerMaster   上一篇博客簡單講解了BlockManager的運行機制,BlockManager在創建的時候首先會向BlockManagerMaster進行註冊,下面我們來看源碼中,在BlockMana

原创 Spark — ShuffleReader過程

Shuffle Reader   在之前的博客中,分析了shuffle map端的操作,map最終會將輸出文件信息封裝爲一個MapStatus發送給Driver,然後ResultTask或ShuffleMapTask在拉取數據的

原创 Spark — SortShuffle源碼分析下

SortShuffle 源碼分析下   接着上一篇博客,我們分析到了maybeSpill()它會分析是否需要進行溢寫到磁盤操作,假如需要溢寫那麼會調用 spill()方法,這個方法是在Spillable中定義的,它是一個trai

原创 Spark — Shuffle操作

Spark的shuffle操作   Spark的shuffle操作分爲HashShuffle和SortShuffle,兩種shuffle(還有一種tungsten-sort shuffle,這個沒有研究過)。其中在Spark1.

原创 Spark — HashShuffle源碼分析

HashShuffle源碼分析   之前分析了兩種Shuffle的區別,現在我們通過源碼來進行分析,首先看HashShuffle,回顧之前流程,Executor在接收到LaunchTask的消息後,調用executor的laun

原创 Spark — Master資源調度機制 schedule()分析

Driver向Master進行Application註冊的時候,Master註冊完之後,會調用schedule()方法,進行資源調度。下面我們對schedule()源碼進行分析,schedule()源碼如下: private def

原创 Spark源碼 — Executor註冊

Executor註冊   註冊的機制流程如下,CoarseGrainedExecutorBackend進程啓動之後,會立即向Driver發送消息註冊executor消息,Driver註冊成功之後,會返回RegisteredExe