Spark Executor 挂在 ShuffleBlockFetcherIterator 远程获取上

问题描述 投票:0回答:0

我正在 Amazon EMR 环境中托管的 Spark 集群上运行一些 Sedona 地理空间查询。我的查询适用于某些输入数据集,但当输入数据集稍大时,它会挂在 Spark SQL 针对结果数据集的“count()”方法上。在结果中获取大约 200K 条记录。

**环境:** Amazon emr-6.2.0, Hadoop 发行版:Amazon, spark 3.0.1 Java 版本 1.8.0_362(Amazon.com Inc.) Scala Version 版本 2.12.10

**集群配置:** 主人:1个c5.2xlarge;核心:2xc5.2xlarge 任务:2xc5.2xlarge Executors' states

症状

有些执行者会通过,有些执行者会卡住,如图所示。对于挂起的执行器,进入该状态通常需要不到一分钟的时间,Java 垃圾收集 (GC) 花费的时间似乎不是问题。

当 count() 最终超时时,驱动程序日志将停止在这样一个点:

23/03/30 19:25:50 信息TypeUtil:JVM 运行时不支持模块 23/03/30 19:25:50 INFO BlockManagerInfo:删除了内存中 ip-10-11-1-20.ec2.internal:42955 上的 broadcast_9_piece0(大小:9.6 KiB,免费:5.9 GiB) 23/03/30 19:25:50 INFO BlockManagerInfo:删除了内存中 ip-10-11-1-20.ec2.internal:42955 上的 broadcast_8_piece0(大小:9.0 KiB,免费:5.9 GiB) 23/03/30 19:25:50 INFO BlockManagerInfo:删除了内存中 ip-10-11-1-54.ec2.internal:45875 上的 broadcast_8_piece0(大小:9.0 KiB,免费:4.9 GiB) 23/03/30 19:25:50 INFO BlockManagerInfo:删除了内存中 ip-10-11-1-190.ec2.internal:37043 上的 broadcast_8_piece0(大小:9.0 KiB,免费:4.9 GiB)

在挂起的执行程序上,看起来他们都卡在了他们试图获取远程数据块的地方:

23/03/30 19:23:59 信息 ShuffleBlockFetcherIterator:获取 3 个(146.8 MiB)非空块,包括 2 个(119.9 MiB)本地块和 0 个(0.0 B)主机本地块和 1 个(26.9 MiB)远程块 23/03/30 19:23:59 信息 TransportClientFactory:1 毫秒后成功创建与 ip-10-11-1-190.ec2.internal/10.11.1.190:7337 的连接(引导程序花费 0 毫秒) 23/03/30 19:23:59 信息 ShuffleBlockFetcherIterator:在 21 毫秒内启动了 1 个远程提取 23/03/30 19:23:59 信息 MapOutputTrackerWorker:没有 shuffle 2 的地图输出,获取它们 23/03/30 19:23:59 INFO MapOutputTrackerWorker:正在获取;跟踪端点 = NettyRpcEndpointRef(spark://[email protected]:39923) 23/03/30 19:23:59 INFO MapOutputTrackerWorker:获得输出位置 23/03/30 19:23:59 INFO ShuffleBlockFetcherIterator:获取 2 (5.7 MiB) 非空块,包括 0 (0.0 B) 本地和 0 (0.0 B) 主机本地和 2 (5.7 MiB) 远程块 23/03/30 19:23:59 信息 TransportClientFactory:1 毫秒后成功创建与 ip-10-11-1-204.ec2.internal/10.11.1.204:7337 的连接(引导程序花费 0 毫秒) 23/03/30 19:23:59 信息 ShuffleBlockFetcherIterator:在 2 毫秒内开始 1 个远程提取

整个查询失败可能是因为远程获取永远不会返回。

这非常令人费解,因为它适用于我的一些输入数据集,但不适用于其他数据集。预先感谢您的任何建议!

我曾尝试在具有 5 个亚马逊 c5d.x4large 任务虚拟机的较大 spark 集群上运行相同的作业,但这没有帮助。

apache-spark amazon-emr
© www.soinside.com 2019 - 2024. All rights reserved.