我有一个spark作业,该作业会定期挂起,从而使我的AWS EMR群集处于应用程序正在运行但实际上卡死的状态。我知道,如果我的工作没有卡死,它将在5个小时或更短的时间内完成。如果此后它仍在运行,则表明该作业已卡住。纱线和Spark UI仍然可以响应,只是执行者被卡在任务上。
背景:我使用的是短暂的EMR集群,该集群在终止之前仅执行一个步骤,因此,如果我注意到这项工作正在挂起,则将其杀死是没有问题的。
在这种情况下,杀死任务,工作或集群的最简单方法是什么?理想情况下,这不需要设置一些额外的服务来监视工作,理想情况下,我可以使用某种火花/纱线/ emr设置。
注意:我已经尝试过使用火花投机来解除卡住的火花工作,但这无济于事。
答案 0 :(得分:0)
EMR具有Bootstrap Actions功能,您可以在其中运行初始化集群时启动的脚本。我已经将此功能与启动脚本一起使用,该脚本可以监视群集联机的时间,并在一定时间后自行终止。
我将基于该脚本的脚本用于引导操作。 https://github.com/thomhopmans/themarketingtechnologist/blob/master/6_deploy_spark_cluster_on_aws/files/terminate_idle_cluster.sh
基本上制作一个脚本来检查/ proc / uptime,以查看EC2计算机已联机多长时间,并且在正常运行时间超过您的时间限制后,可以向集群发送关闭命令。