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)
参考:
最后答案很简单。我尝试了纱线,我有同样的问题与独立。我发现,通过在每个节点上的$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