执行器只能在节点上至少有一个工作守护进程的节点上启动,也就是说,在不作为工作守护进程的节点上不会启动执行器。
但是,从哪里开始Master和Workers都是基于您的决定,没有Master和Worker不能在同一个节点上共同定位的限制。
要在与主程序相同的计算机上启动辅助守护进程,您可以编辑conf/slaves
文件以在其中添加主ip,并在启动时使用start-all.sh;或者在主节点上任何您想要的时间启动辅助程序,start-slave.sh
并提供Spark主URL--master Spark://master-host:7077
更新(基于丹尼尔·达拉博斯的建议):
当引用Application Detail UI
的Executors
选项卡时,您还可以找到一行的
执行器ID,它表示的驱动程序是调度和监视作业的进程,它运行提交给spark集群的Main
程序,将RDDs上的转换和操作划分为阶段,将阶段作为任务集调度,并安排Executors
执行任务。
此
将在您以客户端模式
调用spark-submit
的节点上启动,或者在集群模式
的工作节点上启动
在EMR集群或任何集群中,YARN有可能在同一个EC2实例中分配驱动程序和执行器吗?我想知道驱动程序是否可以利用1个EC2实例的存储和处理能力,或者该实例的某个部分将用于服务集群中运行的其他spark作业。这可能会导致我的驱动程序内存不足。 我认为资源管理器是根据集群资源的可用性来决定的?
我有一个Spark集群运行在hdfs之上的纱线模式。我启动了一个带有2个内核和2G内存的worker。然后我提交了一个具有3个核心的1个执行器动态配置的作业。不过,我的工作还能运转。有人能解释启动worker的内核数量和为执行者请求的内核数量之间的差异吗。我的理解是,由于执行者在工人内部运行,他们无法获得比工人可用的资源更多的资源。
目前,我正在群集模式(独立群集)下使用Spark 2.0.0,群集配置如下: 工作线程:使用了4个内核:总共32个,使用了32个内存:总共54.7 GB,使用了42.0 GB 我有4个奴隶(工人)和1台主机。火花盘有三个主要部件-主部件、驱动部件、工作部件(参考) 现在我的问题是,驱动程序正在其中一个工作节点中启动,这阻碍了我在其全部容量(RAM方面)中使用工作节点。例如,如果我在运行spark作
我尝试使用Spark2.3本机kubernetes部署特性在kubernetes集群上运行简单的spark代码。 我有一个kubernetes集群在运行。此时,spark代码不读取或写入数据。它创建一个RDD from list并打印出结果,只是为了验证在Spark上运行kubernetes的能力。此外,还复制了kubernetes容器映像中的spark应用程序jar。 2018-03-06 10
我在火花流应用程序中从kafka读取数据并执行两个操作 将dstream插入hbase表A 更新另一个hbase表B 我想确保对于dstream中的每个rdd,插入hbase表A将在对hbase表B进行更新操作之前发生(每个rdd依次发生上述两个动作) 如何在火花流应用中实现这一点
如果我们以RDD的形式处理存储在Spark本地磁盘中的一个大CSV文件(大小为1 GB),并将其重新划分到4个不同的分区,执行器会并行处理每个分区吗?如果我们不将RDD重新划分为4个不同的分区,执行器会怎么做?如果不使用HDFS,我们是否会失去分布式计算和并行性的能力?