当前位置: 首页 > 知识库问答 >
问题:

Spark num执行者

祁奇略
2023-03-14

我在AWS上设置了一个10节点的HDP平台。下面是我的配置2台服务器——名称节点和备用名称节点7个数据节点,每个节点有40个vCPU和160 GB内存。

我试图在提交spark应用程序时计算执行者的数量,在浏览了不同的博客后,我对这个参数的实际含义感到困惑。

看看下面的博客,num executors似乎是所有节点上的执行者总数http://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

但是看看下面的博客,似乎num执行器是每个节点或服务器https://blogs.aws.amazon.com/bigdata/post/Tx578UTQUV7LRP/Submitting-User-Applications-with-spark-submit

请任何人澄清并回顾以下内容:-

>

我使用下面的计算得出核心计数,执行器计数和每个执行器的内存

核心数

用上面的计算这将是正确的方法

--master yarn-client --driver-memory 10G --executor-memory 22G --num-executors 7 --executor-cores 5 

OR

--master yarn-client --driver-memory 10G --executor-memory 22G --num-executors 49 --executor-cores 5 

谢谢Jayadeep

共有2个答案

叶桐
2023-03-14

容量调度器出现故障。据我所知,它只允许你根据记忆安排时间。首先需要将其更改为主要资源计算器调度类型。这将允许您要求更多的内存和内核组合。一旦你改变了这一点,你应该能够要求与你的spark应用程序的杯子和内存。

至于--num-执行器标志,您甚至可以将其保持在1000的非常高的值。它仍然只分配每个节点上可能启动的容器数量。随着群集资源的增加,附加到应用程序的容器将会增加。每个节点可以启动的容器数量将受到分配给这些节点上的无需求者的资源量的限制。

宋伯寅
2023-03-14

请任何人澄清并回顾以下内容:-

  1. num执行器的值是每个节点还是所有数据节点上执行器的总数。

您首先需要了解执行器是在节点管理器上运行的(您可以将其视为Spark standalone中的工作者)。将为您在纱线上的Spark应用程序分配相当于指定执行器数量的容器(包括vCPU、内存、网络、磁盘等)。现在,这些执行器容器将在多个节点管理器上运行,这取决于CapacityScheduler(HDP中的默认调度器)。

总之,total number of executors是您为应用程序运行指定的资源容器的数量。

请参阅此博客以更好地理解。

核心数

没有严格的公式来计算执行者的数量。相反,您可以尝试为应用程序启用纱线中的动态分配。

 类似资料:
  • Ruby 程序 Ruby程序的执行就是对代码进行计算的过程。先编译程序文本,遇到BEGIN就对其作出计算;然后计算顶层的一系列的表达式;若遇到END的话,将在最后对其进行处理然后结束程序(关于结束程序时处理步骤的详细过程请参考结束程序时的相关处理)。 语句 if if句的计算过程如下:先对条件表达式进行计算,若为真则执行相应代码段,若为假则依次计算elseif部分的条件表达式,若遇到值为真的表达式

  • java.util.concurrent.Executor接口是一个支持启动新任务的简单接口。 ExecutorService方法 Sr.No. 方法和描述 1 void execute(Runnable command) 在将来的某个时间执行给定的命令。 例子 (Example) 以下TestThread程序显示了基于线程的环境中Executor接口的使用。 import java.util.c

  • 1.3 新版功能. 默认情况下,Fabric 会默认 顺序 执行所有任务(详细信息参见 Execution strategy ),这篇文档将介绍 Fabric 如何在多个主机上 并行 执行任务,包括 Fabric 参数设置、任务独立的装饰器,以及命令行全局控制。 它是如何运转的 由于 Fabric 1.x 并不是完全线程安全(以及为了更加通用,任务函数之间并不会产生交互),该功能的实现是基于 Py

  • 问题内容: 我已经尝试了这两个代码,但是却没有执行,有人可以告诉我为什么吗? 提前致谢 问题答案: 试试这个代码: 它会在源元素的位置单击并按住,移至目标元素的位置,然后释放鼠标。 要么 它将单击并按住源元素的位置,移动给定的偏移量,然后释放鼠标。 要么 它将执行以上两个代码的操作。 我在Java上编写此代码。您可以转换为指定的语言。 从动作引用。

  • 我正在构建一个能够执行Selenium指令和Cucumber指令的框架。我已经在一个单独的空类中为Cucumber创建了runner,代码如下 我还将在一个单独的类中为Selenium指令提供一个处理器。 如果Cucumber运行类是空类,我如何执行它?,我是否只是为Cucumber创建运行类的实例?还是我得去做些别的

  • 在windows上,我可以用ffmpeg剪辑一段带有以下代码的视频。exe 无法在android中使用ffmpeg。我用gradle在我的应用程序中抓取ffmpeg。 我的方法里有这些台词 显示此错误:运行exec()时出错。命令:[/data/data/com.videoeditor.myname.myapp/files/ffmpeg,ffmpeg,-i,/storage/emulated/0/

  • 电磁铁模块 快门线模块

  • 既然已经学了execute和normal!,我们就可以深入探讨一个Vimscript惯用法。 执行下面的命令: :::vim :execute "normal! gg/foo\<cr>dd" 这将移动到文件的开头,查找foo的首次出现的地方,并删掉那一行。 之前我们尝试过用normal!来执行一个搜索命令却无法输入必须的回车来开始进行搜索。 结合execute和normal!将解决这个问题。 e