火花工作挂在工人身上,CPU固定为100%

时间:2017-11-30 10:00:30

标签: apache-spark pyspark yarn

偶尔我的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。

1 个答案:

答案 0 :(得分:1)

你不能让你的任何工人达到100%的CPU。

如果您使用Yarn,则可以限制允许作业使用的核心数。

另一种选择是在worker上使用cgroup来限制CPU使用率。