如何解决 Spark 上的纱线容器尺寸问题?

2024-01-09

我想启动一些 pyspark 作业YARN。我有 2 个节点,每个节点 10 GB。我可以像这样打开 pyspark shell:pyspark

现在,当我有一个非常简单的示例时,我尝试启动:

import random
NUM_SAMPLES=1000
def inside(p):
    x, y = random.random(), random.random()
    return x*x + y*y < 1

count = sc.parallelize(xrange(0, NUM_SAMPLES)) \
             .filter(inside).count()
print "Pi is roughly %f" % (4.0 * count / NUM_SAMPLES)

结果我得到了一个很长的带有错误输出的火花日志。最重要的信息是:

ERROR cluster.YarnScheduler: Lost executor 1 on (ip>: Container marked as failed: <containerID> on host: <ip>. Exit status 1.  Diagnostics: Exception from container-launch.  ......

后来在日志中我看到......

ERROR scheduler.TaskSetManager: Task 0 in stage 0.0 failed 1 times: aborting job
INFO cluster.YarnClientSchedulerBackend: Asked to remove non-existent executor 1
INFO spark.ExecutorAllocationManager: Existing executor 1 has been removed (new total is 0)

从我从上面的日志中收集到的信息来看,这似乎是纱线中的容器尺寸问题。

My yarn-site.xml文件具有以下设置:

yarn.scheduler.maximum-allocation-mb = 10240
yarn.nodemanager.resource.memory-mb = 10240

and in spark-defaults.conf包含:

spark.yarn.executor.memoryOverhead=2048
spark.driver.memory=3g

如果您想了解任何其他设置,请告诉我。

如何正确设置纱线容器尺寸?
(对于可以帮助我的人的赏金正在路上)


首先让我解释一下在 YARN 集群上调整 Spark 应用程序所需的一组基本属性。

Note:YARN中的Container相当于Spark中的Executor。为了便于理解,您可以认为两者是相同的。

在纱线站点.xml 上:

yarn.nodemanager.resource.memory-mb是给定节点上集群可用的总内存。

yarn.nodemanager.resource.cpu-vcores是给定节点中集群可用的 CPU vcore 总数。

yarn.scheduler.maximum-allocation-mb是每个纱线容器可以分配的最大内存(以 mb 为单位)。

yarn.scheduler.maximum-allocation-vcores是每个纱线容器可以分配的最大 vcore 数量。

Example:如果节点有 16GB 和 8vcore,并且您想向集群贡献 14GB 和 6vcore(对于容器),则设置属性如下所示:

纱线.nodemanager.resource.内存-mb:14336(14GB)

纱线.nodemanager.resource.cpu-vcores:6

并且,要创建每个具有 2GB 和 1vcore 的容器,请设置以下属性:

纱线.scheduler.最大分配-mb:2049

纱线.scheduler.最大分配-vcores : 1

Note:即使有足够的内存(14GB)来创建 7 个 2GB 的容器,上述配置也只会创建 6 个 2GB 的容器,并且 14GB 中只有 12GB 将用于集群。这是因为集群只有 6 个可用的 vcore。

现在在 Spark 方面,

以下属性指定每个执行程序/容器请求的内存

spark.driver.memory

spark.executor.memory

以下属性指定每个执行程序/容器请求的 vcore

spark.driver.cores

spark.executor.cores

IMP: 所有 Spark 的内存和 vcore 属性都应小于或等于 YARN 的配置

以下属性指定 YARN 集群中可用于 Spark 应用程序的执行器/容器的总数。

spark.executor.instances

此属性应小于 YARN 集群中可用容器的总数。

一旦纱线配置完成,火花应该请求容器可以根据YARN配置进行分配。这意味着,如果 YARN 配置为每个容器最多分配 2GB 并且 Spark 请求具有 3GB 内存的容器,则作业将暂停或停止,因为 YARN 无法满足 Spark 的请求。

现在为您的用例:通常,集群调整是基于工作负载的。但下面的配置应该更合适。

可用内存:10GB*2节点可用 Vcor​​e:5 * 2 vcores [假设]

在yarn-site.xml上[在两个节点中]

yarn.nodemanager.resource.memory-mb : 10240

yarn.nodemanager.resource.cpu-vcores : 5

yarn.scheduler.maximum-allocation-mb : 2049

yarn.scheduler.maximum-allocation-vcores : 1

使用上述配置,您可以在每个节点上最多创建 10 个容器,每个容器具有 2GB,1vcore。

火花配置

spark.driver.memory 1536mb

spark.yarn.executor.memoryOverhead 512mb

spark.executor.memory 1536mb

spark.yarn.executor.memoryOverhead 512mb

spark.driver.cores 1

spark.executor.cores 1

spark.executor.instances 19

请随意尝试这些配置以满足您的需求。

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

如何解决 Spark 上的纱线容器尺寸问题? 的相关文章

随机推荐

  • 从字符串中删除所有非 utf-8 符号

    我有大量的文件和解析器 我要做的就是去掉所有非 utf 8 符号并将数据放入 mongodb 中 目前我有这样的代码 with open fname r as fp for line in fp line line strip line l
  • Typeorm子查询添加选择

    我是新使用的typeorm这是我第二次感到困惑typeorm 我有以下查询 SELECT t1 a t1 b t2 a SELECT TOP 1 t1 a FROM table1 t1 WHERE t1 b t2 a ORDER BY t1
  • 将 pandas 中的时间序列重新采样为每周间隔

    如何将 pandas 中的时间序列重新采样为每周频率 其中每周从任意一天开始 我看到有一个可选的关键字库 但它只适用于短于一天的时间间隔 你可以通过锚定偏移量 http pandas pydata org pandas docs stabl
  • C++ boost 库 - 写入 ini 文件而不覆盖?

    我正在尝试使用 boost 库的 ini 解析器和属性树编写 ini 文件 该文件是分阶段写入的 我的意思是每个函数都会写入其中的一部分 最后 我只留下最后的输出 而不是写下所有内容 我在编写时使用的示例代码 property tree p
  • selenium.open() 在迭代测试中变得无响应

    我有一组必须使用不同参数执行的测试步骤 我已在 Eclipse TestNG 中编写了此脚本 由 Excel 工作表提供的参数驱动 现在 测试步骤包括设置页面的属性 然后打开另一个页面以确认该属性已设置 所以 实际上 我使用了一个简单的se
  • Spark,如何打印查询?

    我正在使用 pyspark df self sqlContext read option es resource indexes format org elasticsearch spark sql load df df filter df
  • 如何用Java管理Linux文件权限?

    是否有任何机制来获取和设置文件 目录权限 比如我想以shell的方式显示一个文件的权限 rwxr xr 使用 Java 可以做到这一点吗 我知道里面有一些方法File类来知道文件是否canExecute canRead and canWri
  • Apple-app-site-association 文件无法下载

    我已将我的 apple app site association 文件上传到我的 HTTPS Web 服务器的根目录之后 我已在 xcode 中添加了我的关联域 我已遵循 Apple 通用链接教程 SWC 拒绝重定向到 https exam
  • 为什么网格模板区域中缺少的网格区域名称会创建额外的轨道?

    我创建了一个简单的 CSS 网格 我决定不指定grid template grid template columns grid template rows特性 相反 我开始于grid template areas 并分配地区名称 to th
  • 推特引导程序中缩小尺寸?

    当 在我的浏览器中 我缩小两次 ctrl ctrl 而不是默认的 使用 ctrl 0 查看时 我喜欢使用 twitter bootstrap 的所有项目的大小 缩放会影响字体大小 响应式设计以及我想使用 bootstrap 的其他十几个重要
  • 如何允许 UWP ListView 滚动到最后一项?

    我有一个 ListView 其中包含一堆大小不规则的项目 当您滚动 ListView 时 最后一项的底部将最终位于控件的底部 您无法继续滚动 如果最后一项小于控件 我想要top最后一个项目能够滚动到控件的顶部 如果该项目比控件大 我对默认行
  • Rails 3.2.6 和通过迁移创建数据库视图

    我使用的是 Rails 3 2 6 我需要创建一个数据库 VIEW 像往常一样 我创建了一个迁移 并尝试使用执行方法来实现目标 不幸的是 迁移生成的是表 而不是视图 为什么 提前谢谢了 毛罗 UPDATE 我想要如下的东西 class Cr
  • C# 中 Delphi“shl”的等价物是什么?

    我正在基于 Delphi 转换代码 用 C 制作一个应用程序 但我发现了一个我不认识的命令 shl 我想知道是否有与 C 等效的命令 提前致谢 Shl is 左移 http www delphibasics co uk RTL asp Na
  • 如何静态检测缺失的 @Override 注释?

    在 Java 5 和 Java 6 之间 有关的规则 Override源自接口 而不是超类 的方法的注释已更改 在不允许之前 但在允许之后 然而 他们并不是required通过javac 某些 IDE 例如 eclipse 可能会针对此类缺
  • 为什么 constexpr 不是所有函数的默认值? [复制]

    这个问题在这里已经有答案了 在放宽 constexpr 的规则后 这些函数似乎可以在任何地方使用 它们也可以在常量 constexpr 和局部 可变 变量上调用 所以对我来说 这似乎只是编译器的提示 如内联 我只是继续在各处编写它 如果编译
  • ASP.NET Core 应用程序的解决方案资源管理器中的文件嵌套

    当我创建 ASP NET Core 2 0 Razor Page 模板项目时 每个 cshtml 及其 cs 文件都被拆分 我不知道为什么 几分钟前它工作正常 但我不记得我做了什么 也许是 SDK 或 Visual Studio 的设置 我
  • 语法:自上而下和自下而上的区别?

    自上而下和自下而上语法有什么区别 举个例子就太好了 首先 语法本身不是自上而下或自下而上的 parser是 尽管有些语法可以被一种语法解析 但不能被另一种语法解析 从实践的角度来看 主要区别在于大多数手写解析器是自上而下的 而更大比例的机器
  • 查找资源字典时出现设计时错误 - 项目之间不一致

    TLDR 新引用外部的屏幕ResourceDictionary在运行时可以正确地以 VS2015 样式编写文件 但在设计时则不然 是什么赋予了 在工作中 我们有一个 WinForms 产品 其中包含manyWinForms 屏幕上有一位开发
  • std::shared_ptr 向上转换为基类 - 最好的方法?

    哪种转换更好 有什么区别 class Base class Derived public Base public std enable shared from this
  • 如何解决 Spark 上的纱线容器尺寸问题?

    我想启动一些 pyspark 作业YARN 我有 2 个节点 每个节点 10 GB 我可以像这样打开 pyspark shell pyspark 现在 当我有一个非常简单的示例时 我尝试启动 import random NUM SAMPLE