深入探究Spark -- Cluster Manger部署(最常用為YARN實現Task Scheduler)

部署方式有:Standalone(Spark的Deploy模塊)、Mesos、YARN、EC2、Local
SparkContext創建時,通過傳入的Master URL不同,創建不同的SchedulerBackend和TaskScheduler,在spark.SparkContext#createTaskSchuster實現
Master URL:
local:以一個工作線程運行計算任務,不重新計算失敗的計算任務
local[N]/[*]:N個線程,或是啟動與CPU core相等數量的線程,也是不會重新計算失敗
local[threads, maxFailures]:設置線程數與最大的失敗重試數
local-cluster[numSlaves, coresPerSlave, memoryPerSlave]:本機運行Master和Worker,三個參數分別設置worker的數量、core數、內存
前三種方式,SchedulerBackend的實現是scheduler.local.LocalBackend,TaskScheduler的實現是scheduler.TaskSchedulerImpl,它也有LocalActor,通過這個與Executor
第四種為偽分布式,和Standalone類似,只不過都運行在同一個機器。SB的實現是scheduler.cluster.SparkDeploy-SchedulerBackend,TS的實現是scheduler.Task-SchedulerImpl
Worker接到Master的LaunchExecutor信息后,創建實例ExecutorRunner,啟動一個新的進程,它的實現是spark.executor.Coarse-GrainedExecutorBackend。它不在Worker進程內
Local-cluster可以啟動多個Worker
Mesos:采用Master/Slave架構,主要由Master、Slave、Framework、Executor組成,通過ZooKeeper實現Master高可用
Mesos資源調度分為粗粒度與細粒度調度
粗粒度就是每個Executor獲得資源就長期持有,直到應用程序退出才釋放。優點是減少資源調度的開銷,缺點就是資源被長期占有,會造成資源浪費
細粒度就是根據任務實際動態申請,避免了資源浪費,但同時調度的時間開銷更大
通過spark.mesos.coarse來設置是粗還是細
YARN:重點關注一下
YARN包括ResourceManager負責全局管理所有應用的計算資源分配,每一臺機器的NodeManager管理應用在這臺機器上的進程并組織計算
ApplicationMaster負責調度和協調,結合從RM獲得的資源和NM協同工作,每一個應用對應的AM的職責有向調度器索取、運行任務、跟蹤與監控狀態和進程、處理任務失敗
RM不對應用進行監控和跟蹤,是基于應用程序的純粹調度器,把資源分給多個隊列和應用
NM是每臺機器框架的代理,是執行應用程序的容器,監控應用程序的資源使用并向調度器匯報
過程:Client提交Job后,AM向RM請求資源,獲得后AM在NM上啟動Container,運行計算任務,并監控任務(一個應用對應一個AM,而一個AM對應管理多個NM)
YARN的Cluster模式:
通過YARN調度Spark Application所需資源。Application通過YARN Client提交到RM,RM在一個工作節點啟動AM(注冊為YARN ApplicationMaster),開始應用的提交(spark.deploy.yarn.ApplicationMaster)
TaskScheduler的實現是spark.scheduler.cluster.YarnClusterScheduler,它完成了AM的初始化。AM通過RM和NM的接口啟動若干個容器作為spark.executor.CoarseGrainedExecutorBackend,最終啟動Executor
YARN的Client模式:
與Cluster模式區別在于提交Application的SparkContext在本地,適合Application需要與本地交互的場景;Cluster模式是計算的全部節點都在YARN節點上進行。
SparkContext創建spark.scheduler.cluster.YarnClient-ClusterScheduler和spark.scheduler.cluster.YarnClientSchedulerBackend,分別是兩個模塊的實現。其中SchedulerBackend可以和ExecutorBackend通過AKKA通信,并向RM提交Application,AM負責在多個節點上啟動Executor
Standalone:
Master/Slave架構,Master負責整個集群的資源調度和Application管理,Slave(Worker)接收Master資源調度命令后啟動Executor,并最終完成計算任務。
Client負責Application的創建和向Master注冊,并接收Executor的狀態更新和計算結果。
Master、Worker、Client都是通過AKKA通信,Master和Worker都是一個Actor
Master:接收Worker注冊并管理所有Worker,接收Client提交Application,并提交給Worker
Worker:向Master注冊自己,根據Master發送的Application配置進程環境,并啟動StandaloneExecutorBackend
Client:向Master注冊并監控Application。創建SparkContext時生成SparkDeploySchedulerBackend,就會向Master發送請求了
Standalone模式是通過Spark的Deploy模塊就能實現,部署簡單,有利于推廣Spark
得到計算資源Executor,Task就到達了真正計算的步驟。

轉載于:https://www.cnblogs.com/kinghey-java-ljx/p/8522573.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/250873.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/250873.shtml
英文地址,請注明出處:http://en.pswp.cn/news/250873.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

es6 --- Promise.all等待多個異步任務執行

項目中遇到一個問題,要用多個http請求,獲取數據,然后將獲取的數據統一處理… 第一反應想到用promise.all來做… 下面進入主體 // 首先使用promise封裝http請求. function getListByDetecttype (params) {return new Promise((resolve, reject) > {let param params ? par…

16 代碼分割之錯誤邊界與Suspense和命名導出

代碼分割之錯誤邊界與Suspense const Main React.lazy(() > import(./main)) class ErrorBoundary extends React.Component {state {hasError: false,}static getDerivedStateFromError(err) {console.log(getDerivedStateFromError err, err)return {hasError: true}}c…

Python 原生爬蟲

Python3 實現游戲主播人氣排行榜 from urllib import request import re# 爬取某個游戲主播的人氣(每個游戲主播的觀看人數)排行榜 爬蟲前奏:明確爬蟲目的找到數據對應的網頁分析網頁的結構找到數據所在的標簽位置模擬HTTP請求,向…

Mac 下查看網絡端口占用情況

1、Mac 下查看網絡端口占用情況 有的時候關閉了服務器,但是端口還是占用,解決的方法是 kill 掉占用該端口的進程。 # 查看 8009 端口的占用情況 $ lsof -i:8009 可以看到,該端口被 id 為 4215 的進程所占用,這個時候直接在命令…

javascript --- 變量提升的理解

看下面一段代碼: (function () {var x foo();var foo function foo () {return "foobar";};return x; })();(不許打出來)猜猜返回結果是什么… 答案是 // foo is not a function下面來解釋為什么會這樣,首先得明白: 1.如果變量聲明了但未賦值,則會顯示undefined…

17 初探Context的使用場景

context 容器(即上下文) → 裝數據 → 可以傳遞到程序的多個地方程序在執行時可訪問的容器 import styles from ...則css要寫module.css,否則無效果; import from ...則css無須寫module. ,否則無效果 使用 context.j…

分布式監控系統開發【day37】:需求討論(一)

本節內容 為什么要做監控? 常用監控系統設計討論監控需求討論如何實現監控服務器的水平擴展?監控系統架構設計一、為什么要做監控? 熟悉IT監控系統的設計原理開發一個簡版的類Zabbix監控系統掌握自動化開發項目的程序設計思路及架構解藕原則…

iOS:練習題中如何用技術去實現一個連線題

一、介紹 本人做的app涉及的是教育行業,所以關于練習題的開發肯定是家常便飯。例如,選擇題、填空題、連線題、判斷題等,每一種題型都需要技術去實現,沒啥多大難度,這里呢,就給出實現連線題的核心代碼吧。過…

18 Context與組合的應用場景與使用問題

contextType 指定context類型為創建的上下文,此時不需要用Consumer組件包裹,使用this.context即可訪問會向上找最近的上下文并取值最適合的場景:雜亂無章的組件都需要同一些數據;若單純為了不層層傳遞屬性,使用contex…

http --- 共享加密(對稱加密)的幾個概念

使用互聯網進行數據傳輸時,可能會產生以下四個問題: 1. 竊聽: A向B發送的消息,有可能在傳輸過程中被X竊聽到 2. 假冒: A收到來自B的消息有可能是X冒充的 3. 篡改: A確實收到來自B的消息,但是該消息有可能被X篡改了 4. 事后否認:B確實收到了來自A的消息,但是A是惡意用戶,當A像B…

213. House Robber II 首尾相同的偷竊問題

[抄題]: You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house is the neighbor of…

原型鏈

<!DOCTYPE html><html><head lang"en"> <meta charset"UTF-8"> <title></title></head><body><script> /* 原型中的默認屬性 原型鏈&#xff1a;當調用構造函數&#xff08;Fn()&a…

http --- 公開密鑰加密(非對稱加密)的幾個概念

公開密鑰加密: 公鑰加密,私鑰解密 公開密鑰加密的處理流程: 1. A準備通過互聯網向B發送數據 2. B生成公鑰P和私鑰S 3. B將P發送給A 4. A使用P進行加密,并將密文通過互聯網發送給B 5. B使用S進行解密得到數據公鑰加密的更具體的栗子: 1.B首先準備好公鑰P和私鑰S 2.B將公鑰發布…

19、20 Context API

安裝React Dev Tool Context對象.displayName 使用別名 不使用別名 React.createContext 創建指定的Context對象組件會找離自己最近的Provider&#xff0c;獲取其value變量名都叫value的情況&#xff0c;就近取AContext變量名有所區分&#xff0c;兩個value都可以獲取可以…

01-spring配置詳解

1 bean元素 <!--將User對象交給spring容器進行管理 --><!-- Bean元素:使用該元素描述需要spring容器管理的對象class屬性:被管理對象的完整類名.name屬性:給被管理的對象起個名字.獲得對象時根據該名稱獲得對象. 可以重復.可以使用特殊字符.id屬性: 與name屬性一模一…

第八模塊:算法設計模式、企業應用 第2章 企業應用工具學習

第八模塊&#xff1a;算法&設計模式、企業應用 第2章 企業應用工具學習轉載于:https://www.cnblogs.com/tqtl911/p/9131614.html

http --- 混合加密的具體過程

混合加密: 共享加密存在一個“共享密鑰”無法安全告知服務端的問題.公開加密存在,加密、解密速度慢的問題.混合加密則同時使用了2種加密技術,具體過程如下: 1. B提前生成公鑰P和私鑰S,并將P發布到網上 2. A想(通過互聯網)像B發送數據 3. A從互聯網上獲取B的公鑰P,并使用P對共享…

Vite+Vue3頁面空白、圖標不顯示問題解決

頁面空白問題 由于項目部署在子文件夾下&#xff0c;因此需要配置vite.config.js const config {base: ./, }el-icon圖標不顯示、打包時mkdir無權限 在控制臺Network看字體圖標的請求&#xff0c;發現地址多了_assets&#xff0c;本以為需要重新配置publicDir&#xff0c;后…

在HTML打開已安裝的App,未安裝跳轉到對應的下載鏈接

借鑒 HTML中判斷手機是否安裝某APP&#xff0c;跳轉或下載該應用 function lookApp () {var ua navigator.userAgentvar isAndroid /(Android);?[\s/]([\d.])?/.test(ua)var isIpad /(iPad).*OS\s([\d_])/.test(ua)var isIpod /(iPod)(.*OS\s([\d_]))?/.test(ua)var is…

javascript --- 自定義數組的反序函數

想寫一個自定義的_reverse函數,其作用是將傳入的數組進行部分反序. 效果如下: 輸入[1,2,3,4,5,6,7,8,9] 第一個將2~4個位置的數字反序 第二個將2~6個位置的數字反序. // js function _reverse(arr, s, e) {arr arr.join().slice(0,s) arr.join().slice(s,e).split().revers…