Spark作业无法随集群规模扩展,请求瓶颈排查指导
问题描述
我搭建了一套用于处理TB级数据的ETL管道,为此部署了基于Scala的Spark集群和MinIO对象存储服务器。使用10台Spark虚拟机时,处理并存储200GB数据耗时约30分钟,但存在无法扩展的问题——将Spark虚拟机数量翻倍后,处理时间并未缩短,现寻求瓶颈排查的相关指导。
架构概述
- 本地基于VMWare ESXi 6搭建虚拟机,宿主机处于1GB网络环境
- vCPU与内存均无超配情况
- Spark虚拟机:16vCPU、64GB内存
- MinIO存储:16vCPU、64GB内存,采用RAID0配置
数据处理详情
处理流程如下:
- 从MinIO上的两个数据源读取数据
- 将两个数据源的数据合并(Union)
- 过滤结果数据集中某列的空值
- 对该列执行两次GroupBy操作(第一次GroupBy后保存中间结果)
- 将GroupBy操作得到的数据集与空值数据集合并(Union)
- 将最终结果重新保存至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
相关产品推荐
相关产品推荐

