PySpark+Dataproc配置异常:无法达到预期Executor数量及单实例内存
Dataproc集群Spark Executor配置异常排查问题
集群基础信息与预期配置
集群包含1个主节点和5个工作节点,每个工作节点配置为16CPU + 64GB内存。经计算,理想的Spark配置应为:
- spark.executor.instances = 14
- spark.executor.cores = 5
- spark.executor.memory = 19G
该配置可最大化机器利用率,同时为ApplicationManager和堆外内存预留足够空间。
实际配置与异常现象
使用以下代码创建SparkSession:
spark = SparkSession \ .builder \ .appName('perf-test-extract-skills') \ .config("spark.default.parallelism", "140") \ .config("spark.driver.maxResultSize", "19G") \ .config("spark.executor.memoryOverhead", "1361m") \ .config("spark.driver.memoryOverhead", "1361m") \ .config("spark.sql.adaptive.enabled", "true") \ .config("spark.dynamicAllocation.enabled", "false") \ .config("spark.executor.instances", "14") \ .config("spark.executor.cores", "5") \ .config("spark.executor.memory", "19G") \ .config("spark.kryoserializer.buffer.max", "2000M") \ .config('spark.jars.packages', 'com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.26.0,com.johnsnowlabs.nlp:spark-nlp_2.12:4.1.0') \ .getOrCreate()
实际仅能获得10个单实例内存为10Gib的Executor。尝试将参数yarn.nodemanager.resource.memory-mb修改为64000,让YARN管理最大64GB内存的节点,但问题依旧,无法突破10个Executor及10GB内存的限制。
此外,在“环境”标签页中查看配置值均符合SparkSession中的设置,这意味着主节点已发起请求但无法被满足,疑问是否遗漏了某些配置,或是计算有误?
补充更新
通过上述SparkSession配置成功提升了Executor数量至14个,但每个Executor仍仅使用10GB内存,而非预期的19GB。Executor截图显示存在多列“内存”相关数值,无法理解不同列的含义,询问该Executor是否实际使用了19GB内存?
内容的提问来源于stack exchange,提问作者FairPluto
相关产品推荐
相关产品推荐

