You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark作业无法随集群规模扩展,请求瓶颈排查指导

问题描述

我搭建了一套用于处理TB级数据的ETL管道,为此部署了基于Scala的Spark集群和MinIO对象存储服务器。使用10台Spark虚拟机时,处理并存储200GB数据耗时约30分钟,但存在无法扩展的问题——将Spark虚拟机数量翻倍后,处理时间并未缩短,现寻求瓶颈排查的相关指导。

架构概述

  • 本地基于VMWare ESXi 6搭建虚拟机,宿主机处于1GB网络环境
  • vCPU与内存均无超配情况
  • Spark虚拟机:16vCPU、64GB内存
  • MinIO存储:16vCPU、64GB内存,采用RAID0配置

数据处理详情

处理流程如下:

  1. 从MinIO上的两个数据源读取数据
  2. 将两个数据源的数据合并(Union)
  3. 过滤结果数据集中某列的空值
  4. 对该列执行两次GroupBy操作(第一次GroupBy后保存中间结果)
  5. 将GroupBy操作得到的数据集与空值数据集合并(Union)
  6. 将最终结果重新保存至MinIO

Spark配置

Spark采用Client模式部署,配置如下:

mode = "client"
network.timeout = 1800001 
rpc.askTimeout = 1800000
default.parallelism = 320 
sql.shuffle.partitions = 320 #
spark.sql.adaptive.coalescePartitions.enabled=true
spark.sql.adaptive.enabled=true
sql.files.maxRecordsPerFile = "100000" // spark.write
sql.files.maxPartitionBytes = "31457280" // spark.read
sql.adaptive.advisoryPartitionSizeInBytes = "30m"

sql.objectHashAggregate.sortBased.fallbackThreshold = -1
memory.fraction = 0.85

# executor configs
executor.cores = 4 
executor.memory = 12g 
executor.memoryOverhead = 3g
total.executor.cores = 160
executor.instances = 40
executor.heartbeatInterval = 1800000

内容的提问来源于stack exchange,提问作者yaoviametepe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 10:20:38