Spark 作业挂在 worker 上,CPU 固定在 100%
Spark job hangs on worker with CPU pegged at 100%
有时,我的 Spark 工作似乎无限期地挂在一个 CPU 似乎处于 100% 的工人身上 - 我在反复 运行 顶部时注意到了这一点。
Tasks: 288 total, 1 running, 287 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.1 us, 0.0 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 25157609+total, 11158460+free, 55086460 used, 84905024
buff/cache
KiB Swap: 0 total, 0 free, 0 used. 19393204+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
71167 XXXX 20 0 0.213t 0.049t 28576 S 100.0 20.8 231:58.71
java
我是 Spark 独立集群上的 运行 PySpark,它挂在通常需要几秒钟才能完成的 reduceByKey
操作上。每当这种情况发生在一个工人身上时,我注意到地点级别是任何。我通常只是重新启动 EC2 实例(在 AWS 上工作),然后工作被分配给另一个工作人员,工作最终成功。我想知道我有什么选择来获得更可持续的解决方案。是否会改用 YARN 来识别并杀死此类工人?到目前为止,我一直避免使用 YARN,因为需要安装 HDFS,因为我的管道直接持续到 S3。
您不能让任何员工达到 100% CPU。
如果您使用 Yarn,您可以限制允许作业使用的内核数量。
另一种选择是对工作人员使用 cgroups 来限制 CPU 使用。
有时,我的 Spark 工作似乎无限期地挂在一个 CPU 似乎处于 100% 的工人身上 - 我在反复 运行 顶部时注意到了这一点。
Tasks: 288 total, 1 running, 287 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.1 us, 0.0 sy, 0.0 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 25157609+total, 11158460+free, 55086460 used, 84905024
buff/cache
KiB Swap: 0 total, 0 free, 0 used. 19393204+avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
COMMAND
71167 XXXX 20 0 0.213t 0.049t 28576 S 100.0 20.8 231:58.71
java
我是 Spark 独立集群上的 运行 PySpark,它挂在通常需要几秒钟才能完成的 reduceByKey
操作上。每当这种情况发生在一个工人身上时,我注意到地点级别是任何。我通常只是重新启动 EC2 实例(在 AWS 上工作),然后工作被分配给另一个工作人员,工作最终成功。我想知道我有什么选择来获得更可持续的解决方案。是否会改用 YARN 来识别并杀死此类工人?到目前为止,我一直避免使用 YARN,因为需要安装 HDFS,因为我的管道直接持续到 S3。
您不能让任何员工达到 100% CPU。
如果您使用 Yarn,您可以限制允许作业使用的内核数量。
另一种选择是对工作人员使用 cgroups 来限制 CPU 使用。