Spark不使用独立群集中节点上的所有可用核心

时间:2017-04-27 16:49:13

标签: apache-spark

我正在运行一个带有单独的1个主节点和1个从节点(带有8个VCores)的小型集群。我通过/sbin/start-all.sh启动群集,然后使用/bin/pyspark --master spark://<master ip>:7077

将pyspark添加到群集中

现在在webui中一切似乎都没问题我让我的工作人员在主人处注册,我有8个核心可用。此外,pyspark shell还拥有全部8个核心。

我有一个小RDD,每行包含14行,包含指向压缩文本文件的字符串。

def open_gzip(filepath):

    with gzip.open(filepath, 'rb') as f:
        file_content = f.read()
    return file_content.split(b'\r\n')

wat_paths_rdd = sc.textFile('./file.paths')
wat_rdd = wat_paths_rdd.flatMap(open_gzip)

现在,当我尝试运行此代码时,我可以在htop中看到,在我的工作节点上,在调用flatMap时仅使用了2个核心。

我尝试在slave和master上设置以下参数但无效:

in /conf/spark-defaults.conf
spark.cores.max 8
spark.executor.cores 8

even though I can set
spark.executor.memory 14500m

in /conf/spark-env.sh
export SPARK_WORKER_CORES=8

我在之前的配置中有点丢失,我在一台机器上运行了所有内容,而spark.cores.max 8就足够了。

1 个答案:

答案 0 :(得分:1)

根据任务数量使用核心数量,这取决于您的rdd的分区数量。请检查

rdd.getNumPartitions

如果它们是2,那么您需要使用

增加2-3倍于内核数量的分区数
rdd.repartition

或在您并行化文件时的开始。