apache-spark - Spark中执行器和容器的区别
问题描述
我试图清楚地了解内存分配在纱线托管集群中是如何发生的。我知道有一堆执行程序(一个执行程序有自己的 JVM),一个执行程序在执行期间可以有一个或多个 vcore。
我试图在 YARN 配置中将这种理解结合起来,其中事物被隔离为容器。每个容器实际上是一些 Vcore 和一小部分堆内存的混合。
有人可以确认一个执行者是否获得一个容器,或者一个执行者可以拥有多个容器。我在 Cloudera 上阅读了一些关于 YARN 内存管理的文档,似乎是说 Container 分配了一个 Executor。
解决方案
Spark Executor 在 Yarn Container 内运行,而不是跨 Containers 运行。
Yarn 容器由 YARN 资源管理器按需提供 - 在 Spark 应用程序启动时通过 YARN 动态资源分配。
一个 Yarn Container 只能有一个 Spark Executor,但可以为 Executor 分配 1 个或更多 Core。
每个 Spark Executor 和 Driver 作为其自己的 YARN 容器的一部分运行。
Executors 在给定的 Worker 上运行。
此外,一切都在应用程序的上下文中,因此应用程序在许多工作人员上都有执行程序。
推荐阅读
- javascript - JS - 用 indexOf 比较两个数组
- android - 为什么更长的运行时间 = RAM 中的更多 MB
- r - R:在“正”字符前添加“+”
- docker - 我想创建 2 个具有相同 IP 范围的 docker 网络
- android - Android:在具有线性布局的按钮下方插入视图
- heroku - React 应用程序在桌面上工作,但在移动设备上显示空白页面
- crystal-lang - 是否可以获得损坏的符号链接的解析路径?
- python - 如何在同一窗口中同时显示和更新两个 matplotlib 图?(第2部分)
- swift - 具有自动布局和滚动功能的奇怪 TextView 行为
- dialogflow-es - Dialogflow v2 API - 模拟器中未显示的卡片