我已经在主机和2个工人上安装了Spark。每个worker的原始核心数是8。当我启动主机时,worker可以正常工作,没有任何问题,但问题是在Spark GUI中每个worker只分配了2个核心。
亲切地,我怎样才能增加每个工人工作的8个核心的核心数量?
发布于 2019-12-05 20:02:56
控制每个执行器的核心的设置是spark.executor.cores。参见doc。它可以通过spark-submit命令参数或在spark-defaults.conf中设置。该文件通常位于/etc/spark/conf (ymmv)。YOu可以使用find / -type f -name spark-defaults.conf搜索conf文件
spark.executor.cores 8但是,该设置并不能保证每个执行器都将始终获得所有可用内核。这取决于您的工作负载。
如果您在dataframe或rdd上调度任务,spark将为dataframe的每个分区运行并行任务。一个任务将被调度给一个执行器(独立的jvm),执行器可以在每个核心上的JVM线程中并行运行多个任务。
此外,exeucutor不一定在单独的worker上运行。如果有足够的内存,两个执行器可以共享一个工作节点。
为了使用所有内核,在您的情况下设置可能如下所示:
假设您在每个节点上有10 on的内存
spark.default.parallelism 14
spark.executor.instances 2
spark.executor.cores 7
spark.executor.memory 9g将内存设置为9g将确保将每个执行器分配到单独的节点。每个executor将有7个可用内核。每个数据帧操作将被调度到14个并发任务,这些任务将x 7分配给每个执行器。您还可以对数据帧进行重新分区,而不是设置default.parallelism。一个内核和1G的内存留给操作系统。
https://stackoverflow.com/questions/59193893
复制相似问题