我正在运行一个带有单独的1个主节点和1个从节点(带有8个VCores)的小型集群。我通过/sbin/start-all.sh
启动群集,然后使用/bin/pyspark --master spark://<master ip>:7077
现在在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
就足够了。
答案 0 :(得分:1)
根据任务数量使用核心数量,这取决于您的rdd的分区数量。请检查
rdd.getNumPartitions
如果它们是2,那么您需要使用
增加2-3倍于内核数量的分区数rdd.repartition
或在您并行化文件时的开始。