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

如何利用spark独立集群中节点内存大小不同的所有核心和内存

澹台志诚
2023-03-14
Node 1: 4cores 8gb memory
Node 2: 4cores 16gb memory
.config('spark.executor.memory','7g')
.config('spark.executor.cores', '4')

Cores       |  Memory
----------------------------------
4 (4 Used)  |  15.0 GiB (7.0 GiB Used)  
4 (4 Used)  |  7.0 GiB (7.0 GiB Used)
.config('spark.executor.memory','7g')
.config('spark.executor.cores', '2')

Cores       |  Memory
----------------------------------
4 (4 Used)  |  15.0 GiB (14.0 GiB Used) 
4 (2 Used)  |  7.0 GiB (7.0 GiB Used)
 8 cores 21gb of memory:

    Cores       |  Memory
    ----------------------------------
    4 (4 Used)  |  15.0 GiB (14.0 GiB Used) 
    4 (4 Used)  |  7.0 GiB (7.0 GiB Used)

参考:

  1. Spark独立集群中的工作者、执行者、核心是什么?
  2. 火花独立编号执行器/核心控件
  3. 如何使用Spark独立集群在辅助节点上管理多个执行器?

共有1个答案

归建安
2023-03-14

最后答案很简单。我尝试了纱线,我有同样的问题与独立。我发现,通过在每个节点上的$spark_home/conf/spark-env.sh中设置,独立设置的解决方案最终非常简单:

对于节点1:(4核8GB内存)

SPARK_WORKER_CORES=4
SPARK_WORKER_MEMORY=7g

节点2:(4核16GB内存)

SPARK_WORKER_CORES=8
SPARK_WORKER_MEMORY=14g
.config('spark.executor.memory','7g')
.config('spark.executor.cores', '2')
 Cores       |  Memory
    ----------------------------------
    8 (8 Used)  |  14.0 GiB (14.0 GiB Used) 
    4 (4 Used)  |  7.0 GiB (7.0 GiB Used)
   <property>
                <name>yarn.nodemanager.resource.memory-mb</name>
                <value>7168</value>
        </property>

        <property>
                <name>yarn.scheduler.maximum-allocation-mb</name>
                <value>7168</value>
        </property>

        <property>
                <name>yarn.scheduler.minimum-allocation-mb</name>
                <value>512</value>
        </property>

         <property>
                <name>yarn.nodemanager.resource.cpu-vcores</name>
                <value>4</value>
        </property>

        <property>
              <name>yarn.scheduler.minimum-allocation-vcores</name>
              <value>1</value>
        </property>

        <property>
              <name>yarn.scheduler.maximum-allocation-vcores</name>
              <value>2</value>
        </property>
 类似资料:
  • 我正在进行一个spark项目,我使用的是一个由3个节点组成的hadoop集群,配置如下: > 8cores和16go Ram(Namenode、Application Master、nodemanager和spark Master和worker)。 4core和8go Ram(datanode,nodemanager和worker) 4cores和4go Ram(datanode、nodemana

  • 工人出现在图片上。为了运行我的代码,我使用了以下命令:

  • 如果我只有一个内存为25 GB的执行器,并且如果它一次只能运行一个任务,那么是否可以处理(转换和操作)1 TB的数据?如果可以,那么将如何读取它以及中间数据将存储在哪里? 同样对于相同的场景,如果hadoop文件有300个输入拆分,那么RDD中会有300个分区,那么在这种情况下这些分区会在哪里?它会只保留在hadoop磁盘上并且我的单个任务会运行300次吗?

  • 应用程序不是那么占用内存,有两个连接和写数据集到目录。同样的代码在spark-shell上运行没有任何失败。 寻找群集调优或任何配置设置,这将减少执行器被杀死。

  • > 执行者为每个应用程序。那么工人的角色是什么呢?它是否与执行者协调并将结果反馈给驱动程序?还是司机直接找被执行人对话?如果是的话,那么工人的目的是什么呢? 如何控制申请执行人数? 任务可以在执行器中并行运行吗?如果是,如何配置执行器的线程数? 示例2与示例1相同的集群配置,但我使用以下设置运行一个应用程序--executor-cores10--total-executor-cores10。 示例

  • 我们有一个Hadoop集群,数据节点为275个节点(55Tb总内存,12000个VCore)。这个集群与几个项目共享,我们有一个YARN队列分配给我们,资源有限。 为了提高性能,我们正在考虑为我们的项目构建一个单独的Spark集群(在同一网络中的Mesos上)并访问Hadoop集群上的HDFS数据。 正如Spark文档中提到的:https://spark.apache.org/docs/lates