Spark 客户端模式 - YARN 为驱动程序分配容器?

2023-12-25

我在客户端模式下在 YARN 上运行 Spark,因此我希望 YARN 仅为执行器分配容器。然而,从我所看到的来看,似乎还为驱动程序分配了一个容器,并且我没有得到与预期一样多的执行程序。

我正在主节点上运行 Spark Submit。参数如下:

sudo spark-submit --class ... \
    --conf spark.master=yarn \
    --conf spark.submit.deployMode=client \
    --conf spark.yarn.am.cores=2 \
    --conf spark.yarn.am.memory=8G  \
    --conf spark.executor.instances=5 \
    --conf spark.executor.cores=3 \
    --conf spark.executor.memory=10G \
    --conf spark.dynamicAllocation.enabled=false \

运行此应用程序时,Spark UI 的 Executors 页面显示 1 个驱动程序和 4 个执行程序(总共 5 个条目)。我预计有 5 个执行者,而不是 4 个。 同时,YARN UI 的 Nodes 选项卡显示在实际未使用的节点上(至少根据 Spark UI 的 Executors 页面...)分配了一个容器,使用 9GB 内存。其余节点上运行有容器,每个容器有 11GB 内存。

因为在我的 Spark Submit 中,驱动程序的内存比执行程序少 2GB,所以我认为 YARN 分配的 9GB 容器是为驱动程序分配的。

为什么要分配这个额外的容器?我怎样才能防止这种情况?

火花用户界面:

YARN UI:


Igor Dvorzhak 回答后更新

我错误地假设 AM 将在主节点上运行,并且它将包含驱动程序应用程序(因此设置 spark.yarn.am.* 设置将与驱动程序进程相关)。

所以我做了以下更改:

  • set the spark.yarn.am.*设置为默认值(512m内存,1核)
  • 通过设置驱动程序内存spark.driver.memory to 8g
  • 根本没有尝试设置驱动程序核心,因为它仅对集群模式有效

由于默认设置下的 AM 占用 512m + 384m 的开销,因此其容器适合工作节点上空闲的 1GB 可用内存。 Spark 获取它请求的 5 个执行程序,并且驱动程序内存适合 8g 设置。现在一切都按预期进行。

火花用户界面:

YARN UI:


额外的集装箱被分配给YARN应用大师 https://spark.apache.org/docs/latest/running-on-yarn.html#launching-spark-on-yarn:

在客户端模式下,驱动程序运行在客户端进程中,并且应用大师仅用于向 YARN 请求资源。

即使在客户端模式下驱动程序在客户端进程中运行,YARN application master 仍然在 YARN 上运行并且需要容器分配。

无法阻止 YARN 应用程序主机的容器分配。

作为参考,之前问过类似的问题:Spark 和 Yarn 的资源分配 https://stackoverflow.com/questions/51080595/resource-allocation-with-spark-and-yarn.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 客户端模式 - YARN 为驱动程序分配容器? 的相关文章

随机推荐

  • LVM2:无法创建块设备

    我正在尝试利用LVM2Linux Centos6 0 中的功能 当尝试在特定块设备上定义 PV 的第一步时 我收到以下错误消息 root localhost pvcreate dev sdb 无法以独占方式打开 dev sdb 挂载的文件系
  • 由于 Keycloak 默认登录重定向而导致混合内容错误

    所需信息 我在 Spring 项目后面使用 Keycloak Docker 版本 该项目的客户端是React 客户端和后端之间的通信由REST服务提供 客户端是安全的并使用 https 方案 这是我的 Spring 配置 keycloak
  • 将空值添加到 ASP.net MVC 中的 DropDownList

    我正在构建一个数据输入界面 并已使用 DropDownList 成功绑定了具有数据参考表的列 以便用户从预配置的值中进行选择 我现在的问题是 我不希望默认选择第一个值 我需要强制用户从列表中选择一个值 以避免出现错误 因为他们没有选择该字段
  • CodeIgniter 负载控制器视图

    有没有办法从视图加载控制器 这就是我所追求的 我想多次使用一个视图 但该视图是由单独的控制器加载的 该控制器提供视图和来自数据库的信息 因此 由于来自模型的信息 我不能只设置 this load gt view 等等 有没有办法做这件事 或
  • JNI 在应用程序中检测到错误:调用 JNI GetMethodID 时出现未决异常 java.lang.ClassNotFoundException:未找到类

    我收到以下错误 JNI 在应用程序中检测到错误 调用 JNI GetMethodID 时出现未决异常 java lang ClassNotFoundException 在路径上找不到类 package name class DexPathL
  • HTTPS 的代理 Servlet

    我有一个安全站点 需要在某些页面上显示来自外部非 https URL 的图像 我想创建一个 servlet 仅用作将图像数据传递到页面的代理 一种方法是使用 Apache 的 HttpClient 下载图像数据 然后使用 IOUtils c
  • a href=javascript:function() 在 Firefox 中不起作用

    我尝试使用a href javascript function 在一个按钮中 并带有执行它的函数 它在 Chrome 中工作 但在 Firefox 中不起作用 Firefox 不会发出警报并打开空白选项卡 有人可以帮助我吗 下面是按钮代码
  • Eclipse + Egit:将项目克隆到工作区

    我对它是如何工作的有点困惑 我在 Github 上有一个现有的 git 存储库 并且想将其克隆到我的工作区中 我的目标是将本地存储库直接存储在我的工作区文件夹中 但我无法将其与 EGit 一起使用 当我想使用 EGit 克隆 github
  • 如何用 Jest 模拟/替换对象的 getter 函数?

    在Sinon我可以做以下事情 var myObj prop foo sinon stub myObj prop get function getterFn return bar myObj prop bar 但我怎样才能对 Jest 做同样
  • 究竟什么是“执着无明”?

    持久性无知通常被定义为持久和检索标准 NET 对象 或 POCO 如果您确实坚持给它们命名 的能力 还有一个标准 NET 对象的定义似乎已被广泛接受 http msdn microsoft com en us magazine dd8825
  • 在javascript中获取div位置(顶部)?

    我使用 css 设置了一个 div 的高度top 26px 我在其他地方还有其他 div 我想与该 div 保持一致 我注意到jquery写作 css top 获取我的 css 而不是 div 的 y 坐标 如何使用 javascript
  • Hibernate 不等于示例标准

    Hibernate 有示例标准 例如 Example equal Example create mydbObject 有没有办法反其道而行之 例如 Example notEqual Example createNotEqual mydbOb
  • 如何在 SBT 中刷新更新的 Git 依赖项?

    我已经配置了 SBT 0 11 0 以将 GitHub 项目作为依赖项拉入 按照我的回答这个问题在这里 https stackoverflow com questions 7550376 how can sbt pull dependenc
  • 在AWS CDK中执行代码之前如何等待堆栈完成?

    我正在尝试 AWS CDK 但当我尝试执行依赖于堆栈完成的代码块时 我陷入了困境 这是我当前的代码 class Application extends cdk Construct constructor scope cdk Construc
  • 如何编写一个函数来比较多组布尔(真/假)答案并对其进行排名?

    我已经开始了一个项目 事实证明它比我最初想象的要复杂得多 我正在尝试规划一个基于布尔 真 假 问题和答案的系统 系统上的用户可以回答大量布尔 真 假 问题中的任何问题 并根据他们的答案看到一个显示最相似用户 按相似度顺序排列 的列表 我在谷
  • 静态容器已经有一个与之关联的内核

    部署到 Azure 时出现与 Ninject 相关的错误 The static container already has a kernel associated with it 但在本地运行良好 而且之前它一直在本地和 Azure 上运行
  • Python 中的 Webdriver 屏幕截图

    使用python在windows上使用Selenium Webdriver进行屏幕截图时 屏幕截图直接保存到程序的路径中 有没有办法将 png文件保存到特定目录 Use driver save screenshot path to file
  • 允许用户选择图像的相机或图库

    我想做的事情看起来很简单 但经过几天的搜索 我不太明白 我有一个应用程序 允许用户选择多个 最多 5 个 图像 我正在使用一个ImageView 当用户点击ImageView 我想让他们选择 从图库中选择图像 或 使用相机捕捉图像 我开始使
  • 拉伸div以填充body

    div style height 20px background color red div div style background color black div div style height 20px background col
  • Spark 客户端模式 - YARN 为驱动程序分配容器?

    我在客户端模式下在 YARN 上运行 Spark 因此我希望 YARN 仅为执行器分配容器 然而 从我所看到的来看 似乎还为驱动程序分配了一个容器 并且我没有得到与预期一样多的执行程序 我正在主节点上运行 Spark Submit 参数如下