日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Spark系列(八)Worker工作原理

發布時間:2025/5/22 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark系列(八)Worker工作原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

工作原理圖

?

源代碼分析

包名:org.apache.spark.deploy.worker

啟動driver入口點:registerWithMaster方法中的case LaunchDriver

1? case?LaunchDriver(driverId,?driverDesc)?=>?{
2? ??? logInfo(s"Asked?to?launch?driver?$driverId")
3? ??? //?創建DriverRunner對象啟動Driver
4? ??? val?driver?=?new?DriverRunner(
5? ??? conf,
6? ??? driverId,
7? ??? workDir,
8? ??? sparkHome,
9? ??? driverDesc.copy(command?=?Worker.maybeUpdateSSLSettings(driverDesc.command,?conf)),
10? ??? self,
11? ??? akkaUrl)
12? ??? //?將driver加入本地緩存
13? ??? drivers(driverId)?=?driver
14? ??? driver.start()
15? ?
16? ??? //?增加已使用core
17? ??? coresUsed?+=?driverDesc.cores
18? ??? //?增加已使用內存
19? ??? memoryUsed?+=?driverDesc.mem
20? }

?

DriverRunner

管理一個driver的執行,包括失敗時自動重啟driver,這種方式僅僅適用于standalone集群部署模式

DriverRunner類中start方法實現

1? def?start()?=?{
2? ??? //?創建新線程
3? ??? new?Thread("DriverRunner?for?"?+?driverId)?{
4? ??? ??override?def?run()?{
5? ??? ??? try?{
6? ??? ??? ??//?創建driver工作目錄
7? ??? ??? ??val?driverDir?=?createWorkingDirectory()
8? ??? ??? ??//?下載應用所需的的Jar包
9? ??? ??? ??val?localJarFilename?=?downloadUserJar(driverDir)
10? ?
11? ??? ??? ??def?substituteVariables(argument:?String):?String?=?argument?match?{
12? ??? ??? ??? case?"{{WORKER_URL}}"?=>?workerUrl
13? ??? ??? ??? case?"{{USER_JAR}}"?=>?localJarFilename
14? ??? ??? ??? case?other?=>?other
15? ??? ??? ??}
16? ?
17? ??? ??? ??//?TODO:?If?we?add?ability?to?submit?multiple?jars?they?should?also?be?added?here
18? ??? ??? ??//?構建ProcessBuilder對象,傳入啟動driver命令(所需內存大小)
19? ??? ??? ??val?builder?=?CommandUtils.buildProcessBuilder(driverDesc.command,?driverDesc.mem,
20? ??? ??? ??? sparkHome.getAbsolutePath,?substituteVariables)
21? ??? ??? ??//?啟動driver進程
22? ??? ??? ??launchDriver(builder,?driverDir,?driverDesc.supervise)
23? ??? ??? }
24? ??? ??? catch?{
25? ??? ??? ??case?e:?Exception?=>?finalException?=?Some(e)
26? ??? ??? }
27? ?
28? ??? ??? //?Driver退出狀態處理
29? ??? ??? val?state?=
30? ??? ??? ??if?(killed)?{
31? ??? ??? ??? DriverState.KILLED
32? ??? ??? ??}?else?if?(finalException.isDefined)?{
33? ??? ??? ??? DriverState.ERROR
34? ??? ??? ??}?else?{
35? ??? ??? ??? finalExitCode?match?{
36? ??? ??? ??? ??case?Some(0)?=>?DriverState.FINISHED
37? ??? ??? ??? ??case?_?=>?DriverState.FAILED
38? ??? ??? ??? }
39? ??? ??? ??}
40? ?
41? ??? ??? finalState?=?Some(state)
42? ??? ??? //?向Driver所屬worker發送DriverStateChanged消息
43? ??? ??? worker?!?DriverStateChanged(driverId,?state,?finalException)
44? ??? ??}
45? ??? }.start()
46? }

?

LaunchExecutor

管理LaunchExecutor的啟動

1? case?LaunchExecutor(masterUrl,?appId,?execId,?appDesc,?cores_,?memory_)?=>
2? ??? if?(masterUrl?!=?activeMasterUrl)?{
3? ??? logWarning("Invalid?Master?("?+?masterUrl?+?")?attempted?to?launch?executor.")
4? ??? }?else?{
5? ??? try?{
6? ??? ??logInfo("Asked?to?launch?executor?%s/%d?for?%s".format(appId,?execId,?appDesc.name))
7? ?
8? ??? ??//?Create?the?executor's?working?directory
9? ??? ??//?創建executor本地工作目錄
10? ??? ??val?executorDir?=?new?File(workDir,?appId?+?"/"?+?execId)
11? ??? ??if?(!executorDir.mkdirs())?{
12? ??? ??? throw?new?IOException("Failed?to?create?directory?"?+?executorDir)
13? ??? ??}
14? ?
15? ??? ??//?Create?local?dirs?for?the?executor.?These?are?passed?to?the?executor?via?the
16? ??? ??//?SPARK_LOCAL_DIRS?environment?variable,?and?deleted?by?the?Worker?when?the
17? ??? ??//?application?finishes.
18? ??? ??val?appLocalDirs?=?appDirectories.get(appId).getOrElse?{
19? ??? ??? Utils.getOrCreateLocalRootDirs(conf).map?{?dir?=>
20? ??? ??? ??Utils.createDirectory(dir).getAbsolutePath()
21? ??? ??? }.toSeq
22? ??? ??}
23? ??? ??appDirectories(appId)?=?appLocalDirs
24? ??? ??//?創建ExecutorRunner對象
25? ??? ??val?manager?=?new?ExecutorRunner(
26? ??? ??? appId,
27? ??? ??? execId,
28? ??? ??? appDesc.copy(command?=?Worker.maybeUpdateSSLSettings(appDesc.command,?conf)),
29? ??? ??? cores_,
30? ??? ??? memory_,
31? ??? ??? self,
32? ??? ??? workerId,
33? ??? ??? host,
34? ??? ??? webUi.boundPort,
35? ??? ??? publicAddress,
36? ??? ??? sparkHome,
37? ??? ??? executorDir,
38? ??? ??? akkaUrl,
39? ??? ??? conf,
40? ??? ??? appLocalDirs,?ExecutorState.LOADING)
41? ??? ??//?executor加入本地緩存
42? ??? ??executors(appId?+?"/"?+?execId)?=?manager
43? ??? ??manager.start()
44? ??? ??//?增加worker已使用core
45? ??? ??coresUsed?+=?cores_
46? ??? ??//?增加worker已使用memory
47? ??? ??memoryUsed?+=?memory_
48? ??? ??//?通知master發送ExecutorStateChanged消息
49? ??? ??master?!?ExecutorStateChanged(appId,?execId,?manager.state,?None,?None)
50? ??? }
51? ??? //?異常情況處理,通知master發送ExecutorStateChanged?FAILED消息
52? ??? catch?{
53? ??? ??case?e:?Exception?=>?{
54? ??? ??? logError(s"Failed?to?launch?executor?$appId/$execId?for?${appDesc.name}.",?e)
55? ??? ??? if?(executors.contains(appId?+?"/"?+?execId))?{
56? ??? ??? ??executors(appId?+?"/"?+?execId).kill()
57? ??? ??? ??executors?-=?appId?+?"/"?+?execId
58? ??? ??? }
59? ??? ??? master?!?ExecutorStateChanged(appId,?execId,?ExecutorState.FAILED,
60? ??? ??? ??Some(e.toString),?None)
61? ??? ??}
62? ??? }
63? }

?

總結

1、Worker、Driver、Application啟動后都會向Master進行注冊,并緩存到Master內存數據模型中
2、完成注冊后發送LaunchExecutor、LaunchDriver到Worker
3、Worker收到消息后啟動executor和driver進程,并調用Worker的ExecutorStateChanged和DriverStateChanged方法
4、發送ExecutorStateChanged和DriverStateChanged消息到Master的,根據各自的狀態信息進行處理,最重要的是會調用schedule方法進行資源的重新調度

轉載于:https://www.cnblogs.com/jianyuan/p/Spark%E7%B3%BB%E5%88%97%E4%B9%8BWorker%E5%B7%A5%E4%BD%9C%E5%8E%9F%E7%90%86.html

總結

以上是生活随笔為你收集整理的Spark系列(八)Worker工作原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线成人av网站 | 成人免费视频一区二区 | 中文av在线播放 | 一区二区韩国 | 国产91在线免费 | 成人免费看片又大又黄 | av资源中文在线 | 色婷婷av久久久久久久 | 亚洲精品成人久久 | 日韩r级在线观看 | 99re在线视频精品 | 久久久久久久久久99精品 | 人人妻人人爽人人澡人人精品 | 久久丫精品国产亚洲av不卡 | 国产免费叼嘿网站免费 | 精品日韩制服无码久久久久久 | 国产伦精品一区二区三区高清 | 黄色www | 久久久久久久久久久久国产精品 | wwwwyoujizzcom| 国产熟女一区二区丰满 | a天堂资源| 破处视频在线观看 | 你懂的av在线 | 小柔的裸露日记h | 欧美劲爆第一页 | 欧美在线色 | 97伊人超碰 | 日本中文字幕视频在线 | 超碰成人福利 | 免费h片网站 | 色悠悠网 | 国产成人手机在线 | wwwxxx欧美| 黄色在线观看www | 国产成人在线视频免费观看 | hd极品free性xxx护士 | 欧美xxxx精品| 亚洲天堂999 | 大尺度av | 能免费看18视频网站 | 亚洲蜜桃av | 亚洲一二三四 | 日本黄色一区二区 | 一区二区三区福利 | 中文字幕激情小说 | 亚洲拍拍视频 | 1000部拍拍拍18勿入免费视频 | 禁网站在线观看免费视频 | 在线观看污污网站 | 全国最大色 | 在线免费| 欧美精品区 | 操碰av| 51吃瓜网今日吃瓜 | 一级视频在线免费观看 | 国产亚洲成av人在线观看导航 | 久久久久中文字幕亚洲精品 | 理伦毛片| 黄色xxx| 色婷婷国产精品综合在线观看 | 蜜桃在线一区二区 | 1级av | 日韩中文字幕在线播放 | 亚洲天堂三区 | 波多野结衣亚洲一区 | 午夜黄色剧场 | 成人玩具h视频 | 91免费影片 | 日韩免费中文字幕 | 国产成人午夜高潮毛片 | 午夜福利电影一区二区 | 中文字幕av解说 | 免费看成人片 | 仙踪林久久久久久久999 | 女人扒开腿让男人捅爽 | 精品少妇视频 | jzzijzzij日本成熟少妇 | 久久r精品 | 色姑娘久 | 精品视频第一页 | 日韩中文字幕在线观看视频 | 91黄色国产 | 国产成人av一区二区三区在线观看 | 日韩三级免费看 | 成人在线综合 | 无码人妻少妇伦在线电影 | 婷婷国产一区 | 人妻激情偷乱频一区二区三区 | 亚洲AV无码久久精品色三人行 | 亚洲区av | 国产精品偷伦视频免费看 | 免费处女在线破视频 | 久久精品久久久精品美女 | 天堂网91| 草草视频在线播放 | 私拍在线 | 中文字幕一区二区三区人妻四季 | 九九在线 |