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

Apache Spark中的执行程序和内核

仲阳朔
2023-03-14

请先用以下条款验证我:

执行器:它的容器或JVM进程将运行在工作节点或数据节点上。每个节点可以有多个执行器。

核心:它是容器或JVM进程内的一个线程,运行在工作节点或数据节点上。每个执行器可以有多个内核或线程。

>

  • 当我们提交火花作业时,它意味着什么?我们是否将工作移交给Yarn或resource manager,它将分配资源给集群中的应用程序或作业并执行它?它是正确的理解…?
  • 在spark集群中用于提交作业的命令中,有一个设置执行者数量的选项。

    spark-submit--class --num-executors?--执行器核心?--执行器--记忆?...

    那么这些执行器+核的数量将会是每个节点设置的吗?如果没有,那么我们如何设置每个节点的具体核数呢?

  • 共有1个答案

    邴兴为
    2023-03-14

    你所有的假设都是正确的。关于集群体系结构的详细说明,请通过此链接。你会得到一个清晰的画面。关于您的第二个问题,num-of-executors是针对整个集群的。其计算方法如下:

    num-cores-per-node * total-nodes-in-cluster
    

    例如,假设您有一个带有4核机器的20节点集群,并且您提交了一个带有-executor-memory 1G和--total-executor-cores 8的应用程序。然后Spark会在不同的机器上启动8个执行器,每个执行器有1 GB的RAM。Spark在默认情况下这样做是为了让应用程序有机会为运行在相同机器(例如HDF)上的分布式文件系统实现数据局部性,因为这些系统通常将数据分散在所有节点上。

    希望有帮助!

     类似资料:
    • 我的集群配置如下:-7个节点,每个节点有32个核心和252 GB内存。 纱线配置如下:- map reduce配置如下:- null 在这种情况下,对于纱线调度程序,执行器内存+384最大不能超过10GB。在本例中,9856M+384 MB=10GB,因此它工作正常。现在,一旦spark shell启动,执行程序的总数是124个,而不是请求的175个。每个执行器的spark shell启动日志或s

    • 我正在对YARN上的Spark作业进行一些内存调优,我注意到不同的设置会给出不同的结果,并影响Spark作业运行的结果。但是,我很困惑,不明白为什么会这样,如果有人能给我一些指导和解释,我会很感激。 我将提供一些背景资料和张贴我的问题和描述案例,我已经经历了他们在下面。 我的环境设置如下: 存储器20G,每个节点20个vCore(共3个节点) Hadoop 2.6.0 火花1.4.0 我的代码对R

    • 我是Spark的初学者,我正在运行我的应用程序,从文本文件中读取14KB的数据,执行一些转换和操作(收集、收集AsMap),并将数据保存到数据库 我在我的macbook上本地运行它,内存为16G,有8个逻辑核。 Java最大堆设置为12G。 这是我用来运行应用程序的命令。 bin/spark-submit-class com . myapp . application-master local[*

    • null null 为了进行简单的开发,我使用在独立集群模式下(8个工作者、20个内核、45.3G内存)执行了我的Python代码。现在我想为性能调优设置执行器内存或驱动程序内存。 在Spark文档中,执行器内存的定义是 每个执行程序进程使用的内存量,格式与JVM内存字符串相同(例如512M、2G)。

    • 问题内容: 我有一个MyThread对象,当通过服务器加载我的应用程序时会实例化该对象,将其标记为Daemon线程,然后对其进行调用。只要应用程序处于活动状态,该线程就可以坐下来等待队列中的信息。我的问题/问题是:当前MyThread正在扩展Thread,因为我将其标记为Daemon,并且阅读了有关如何更好地实现Runnable和使用Executors的信息。因此,我想问的是MyThread是否将

    • 问题内容: 我应该如何从我的程序中运行另一个程序?我需要能够将数据写入启动的程序中(并可能从中读取) 我不确定这是否是标准的C函数。我需要应该在Linux下工作的解决方案。 问题答案: 您要使用。它为您提供了一个单向管道,您可以使用该管道访问程序的stdin和stdout。 popen是现代unix和类似unix的操作系统的标准配置,其中Linux是其中之一:-) 类型 在终端上阅读有关它的更多信