有时我的火花工作似乎无限期地挂在一个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
我在火花独立的群集上运行pyspark,它挂在reduceByKey
操作上,通常需要几秒钟才能完成。每当发生这种情况时,它都会在一个工人上,我会注意到所在的级别。通常,我只是重新启动EC2实例(在AWS上工作),然后将工作分配给另一个工人,而工作最终成功。我想知道我可以选择更可持续的解决方案。是否可以转向纱线来识别和杀死此类工人?到目前为止,我避免了纱线,因为我需要安装HDF,因为我的管道直接存在于S3。
您不能让任何工人达到100%CPU。
如果您使用纱线,则可以限制允许作业使用的内核数。
另一个选项将是在工人上使用CGROUP来限制CPU使用。