从本文来看,默认情况下,工作节点使用该节点的所有内存(减去1 GB)。但是我明白,通过使用spark_worker_memory
,我们可以使用更少的内存。例如,如果节点的总内存为32 GB,但我指定为16 GB,那么Spark worker在该节点上使用的内存不会超过16 GB?
但是执行人呢?假设我希望每个节点运行2个执行器,那么可以通过在spark-submit
期间将执行器内存指定为spark_worker_memory
的一半来实现吗?如果我希望每个节点运行4个执行器,可以通过将执行器内存指定为spark_worker_memory
的四分之一来实现吗?
如果是这样,除了执行器内存,我还必须正确地指定执行器核心,我认为。例如,如果我想在一个worker上运行4个执行器,我必须将执行器核心指定为spark_worker_cores
的四分之一?如果我指定一个比这个更大的数字,会发生什么?我的意思是,如果我指定执行器内存是spark_worker_memory
的四分之一,但执行器核心只有spark_worker_cores
的一半?在这种情况下,我会在那个节点上运行2或4个执行器吗?
在我的经验中,这是控制执行器、核心和内存数量的最好方法。
>
核心:您可以设置所有执行器的核心总数和每个执行器的核心数
内存:单独的执行器内存
工人出现在图片上。为了运行我的代码,我使用了以下命令:
> 执行者为每个应用程序。那么工人的角色是什么呢?它是否与执行者协调并将结果反馈给驱动程序?还是司机直接找被执行人对话?如果是的话,那么工人的目的是什么呢? 如何控制申请执行人数? 任务可以在执行器中并行运行吗?如果是,如何配置执行器的线程数? 示例2与示例1相同的集群配置,但我使用以下设置运行一个应用程序--executor-cores10--total-executor-cores10。 示例
并编写下面的查询,它是只在我的master上运行,还是将所有10个节点都用作worker? 如果不是,我必须做什么才能让我的Spark Sql使用完整的集群?
我有一个向spark独立单节点集群提交spark作业的maven scala应用程序。提交作业时,Spark应用程序尝试使用spark-cassandra-connector访问Amazon EC2实例上托管的cassandra。连接已建立,但不返回结果。一段时间后连接器断开。如果我在本地模式下运行spark,它工作得很好。我试图创建简单的应用程序,代码如下所示: SparkContext.Sca
问题内容: 到目前为止,我仅在Linux机器和VM(桥接网络)上运行Spark,但现在我对将更多计算机用作从属设备很感兴趣。在计算机上分发Spark Slave Docker容器并使它们自动连接到硬编码的Spark master IP会很方便。这种不足已经可以解决,但是我在从属容器上配置正确的SPARK_LOCAL_IP(或start-slave.sh的– host参数)时遇到了麻烦。 我认为我已
当Spark应用程序提交到集群时,这些设置在上设置。