原创 spark2.3源碼分析之submitTasks的流程

TaskSchedulerImpl 概述 不同類型的集羣對應於不同的SchedulerBackend:YarnSchedulerBackend、StandaloneSchedulerBackend、LocalSchedulerBacken

原创 spark2.3源碼分析之launchTask的流程

CoarseGrainedSchedulerBackend端 makeOffers()方法 核心流程如下: resourceOffer方法:處理新的executor加入; launchTask方法:構建task // Make fake

原创 yarn3.2源碼分析之ResourceManager基於zk的HA機制

概述   ResourceManager#serviceInit()方法 1、判斷是否啓動HA。如果yarn.resourcemanager.ha.enabled配置參數爲true,則爲啓動HA。 2、如果啓動HA,判斷是否啓用自動失敗重

原创 spark2.3源碼分析之ResultTask讀取並處理shuffle file的流程

ResultTask 概述 ResultTask 執行當前分區的計算,首先從ShuffleMapTask拿到當前partition的數據,會從所有的ShuffleMapTask都拿一遍當前的partition數據。最後合併所有的Resul

原创 AbstractQueuedSynchronizer源碼分析之共享鎖實現

  doAcquireShared()方法 該方法在共享模式以不響應中斷的方式阻塞等待獲取鎖,實現如下: 1、將當前線程封裝成節點入隊; 2、在死循環中調用park方法。第一次循環(自旋、acquire loop),或者被喚醒從park方

原创 yarn3.2源碼分析之YarnClient與ResourceManager通信之submitApplication(三)

概述 submitApplication會經過一系列Event: app_accepted類型的RMAppEvent   start類型的RMAppAttemptEvent  appAttemptAdd類型的SchedulerEvent 

原创 yarn2.7源碼分析之ApplicationMaster與ResourceManager.ApplicationMasterService的通信

概述 ApplicationMaster與ResourceManager之間通信主要有以下三個步驟: 1、ApplicationMaster通過rpc向ResourceManager註冊。ApplicationMaster啓動時,首先向R

原创 yarn3.2源碼分析之NM端startContainer的流程

概述 NM端啓動container會經過一系列event: initApplication類型的ApplicationEvent init_application_resources類型的LocalizationEvent Resour

原创 yarn 3.2源碼分析之NM端launchContainer事件流程

概述 NM端launch container會經歷的event: LaunchContainer類型的ContainersLaunchEvent yarn application會因爲container分配失敗而導致application

原创 yarn 3.2源碼分析之ResourceManager

概述 ResourceManager是一系列組件的集合。它會加載core-site.xml和yarn-site.xml,同時創建yarn scheduler、RMAppManager等一系列組件。 創建yarn scheduler 獲取

原创 yarn3.2源碼分析之moveApplication事件流程

概述 yarn3.2 moveApplication事件 不再經過中央異步調度器AsyncDispatcher和狀態機StateMachineFactory,直接由RMAppManager直接調用scheduler處理moveApplic

原创 kafka2.2源碼分析之KafkaChannel

概述 KakfaChannel基本是對SocketChannel的封裝,只是這個中間多個一個間接層:TransportLayer,爲了封裝普通和加密的Channel。TransportLayer子類有PlaintextTransportL

原创 yarn3.2 源碼分析之FairScheduler連續調度和assignContainer流程

概述 FairScheduler分配container的核心調度流程 核心調度流程如下: 調度器鎖住FairScheduler對象,避免核心數據結構衝突。 調度器選取集羣的一個節點(node),從樹形隊列的根節點ROOT開始出發,每層隊列

原创 yarn3.2源碼分析之NM端startContainer的流程(二)

概述 NM端startContainer會經歷一系列event: request_resource_localization類型的LocalizerEvent  LocalizerTracker是LocalizerEvent的事件處理器