久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

怎么在Yarn集群中分配Container

497次閱讀
沒有評論

共計 1959 個字符,預計需要花費 5 分鐘才能閱讀完成。

本篇內容介紹了“怎么在 Yarn 集群中分配 Container”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

YarnAllocator 從字面意思來看,也應該知道是在 Yarn 集群中分配 Container 的。

private[yarn] class YarnAllocator(
 driverUrl: String,
 driverRef: RpcEndpointRef,
 conf: YarnConfiguration,
 sparkConf: SparkConf,
 amClient: AMRMClient[ContainerRequest],
 appAttemptId: ApplicationAttemptId,
 securityMgr: SecurityManager,
 localResources: Map[String, LocalResource],
 resolver: SparkRackResolver,
 clock: Clock = new SystemClock)

其中 driverUrl 就是 Driver 的地址。當用 YarnAllocator 分配 Container 來運行 Executors 時,這些 Executors 要聯系的 Driver 地址就是構造函數里的 driverRef 參數。

requestTotalExecutorsWithPreferredLocalities 方法是分配多個 Executor 的,先將分配請求保存在隊列里,然后在守護線程中異步的創建 Executor。

def requestTotalExecutorsWithPreferredLocalities(
 requestedTotal: Int,
 localityAwareTasks: Int,
 hostToLocalTaskCount: Map[String, Int],
 nodeBlacklist: Set[String]): Boolean = synchronized {
 this.numLocalityAwareTasks = localityAwareTasks
 this.hostToLocalTaskCounts = hostToLocalTaskCount
 if (requestedTotal != targetNumExecutors) { logInfo(s Driver requested a total number of $requestedTotal executor(s). )
 targetNumExecutors = requestedTotal
 allocatorBlacklistTracker.setSchedulerBlacklistedNodes(nodeBlacklist)
 true
 } else {
 false
 }
 }

targetNumExecutors 就是說明要申請創建多少個 Executor 的意思。具體的實際創建動作是在 runAllocatedContainers 中執行的。

 launcherPool.execute(() =  {
 try {
 new ExecutorRunnable( Some(container),
 conf,
 sparkConf,
 driverUrl,
 executorId,
 executorHostname,
 executorMemory,
 executorCores,
 appAttemptId.getApplicationId.toString,
 securityMgr,
 localResources
 ).run()
 updateInternalState()
 } catch {
 
 }

這一段就是在分配的 Container 上創建 Executor 的過程,用 ExecutorRunner 來包裝的。其中的 driverUrl 就是構造函數中帶過來的 driver 的地址。

可見每個 driver 都會創建一個屬于自己的單獨的 YarnAllocator。

順便說一句,很多人以前 Spark 是集群,實際上 Spark 本身只是一種計算方式,可以看成它只是 jar 包。Spark 的 driver 運行時才會去申請 Executor,向 Yarn 申請或者向 Standalone 集群申請。Standalone 集群是指 Master 和 Worker,不是指 Spark core,更不是指 SparkContext。

“怎么在 Yarn 集群中分配 Container”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計1959字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 乌鲁木齐县| 开阳县| 新宁县| 石景山区| 佛学| 屏南县| 遂溪县| 吴江市| 天镇县| 中西区| 奎屯市| 绥滨县| 郸城县| 乐亭县| 广西| 岱山县| 蓬莱市| 利辛县| 胶南市| 于田县| 合肥市| 陕西省| 搜索| 理塘县| 安达市| 香河县| 昌邑市| 镇康县| 蒙山县| 龙游县| 应城市| 铜梁县| 高唐县| 东城区| 油尖旺区| 方正县| 黑水县| 长子县| 虎林市| 潼关县| 江口县|