Apache spark 如何释放AWS EMR群集上的资源?

Apache spark 如何释放AWS EMR群集上的资源?,apache-spark,yarn,emr,amazon-emr,elastic-map-reduce,Apache Spark,Yarn,Emr,Amazon Emr,Elastic Map Reduce,我有一个常见的问题,我启动一个AWS EMR集群并通过SSH登录,然后运行spark shell来测试一些spark代码,有时我会丢失internet连接,Putty会抛出一个错误,表示连接丢失 但与Spark相关的流程似乎仍在运行。当我重新连接到服务器并再次运行spark shell时,会出现以下错误: 17/02/07 11:15:50 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container marked as failed: c

我有一个常见的问题,我启动一个AWS EMR集群并通过SSH登录,然后运行spark shell来测试一些spark代码,有时我会丢失internet连接,Putty会抛出一个错误,表示连接丢失

但与Spark相关的流程似乎仍在运行。当我重新连接到服务器并再次运行spark shell时,会出现以下错误:

17/02/07 11:15:50 WARN YarnSchedulerBackend$YarnSchedulerEndpoint: Container marked as failed: container_1486465722770_0002_01_000003 on host: ip-172-31-0-217.eu-west-1.compute.internal. Exit status: 1. Diagnostics: Exception from container-launch.
谷歌搜索此错误表明分配的内存存在问题,但由于我在测试集群上使用小型节点,我甚至不想分配更多内存,我只想释放重新启动spark shell时使用的资源,但我没有看到任何spark进程在运行


我怎样才能轻松解决这个问题?是否有其他进程我应该尝试关闭/重新启动,如hadoop、mapred、Thread等?我不想每次遇到这种情况时都启动一个新集群。

您可以使用纱线api来实现这一点。。 在SSH连接到master之后,运行以下命令

yarn application -list
查看是否有应用程序正在运行。 如果有,您可以使用此命令杀死它们:

yarn application -kill <application id>
您还可以使用资源管理器web ui来执行相同的操作。 在群集EMR页面的顶部页面上提供链接

顺便说一句,你可以使用齐柏林飞艇来运行你在Spark shell上运行的相同东西,而不用担心断开连接。。它在EMR上可用。设置群集时,您需要将其选择为应用程序之一


学习如何正确使用和配置需要一些时间,但可能会对您有所帮助。

嗯,是的,存在活动的应用程序。我试过使用kill命令,也试过资源经理。我还确保使用以下命令:sudo/sbin/stop hadoop warn resourcemanager终止了所有Spark进程并停止并再次启动了资源管理器。但是我仍然将容器标记为失败错误。因此我想我没有完全理解您的问题。。您是说集群上是否有spark应用程序运行?顺便说一句,您不确定是否应该停止并启动资源管理器。。如果你杀了他们,你可以再次运行纱线应用程序列表,以确保他们被杀是的,他们在运行,我杀了他们。我再次检查了列表,没有一个正在运行。我还确保所有Spark进程都已关闭。但是,尽管如此,尝试启动spark shell还是引发了上述异常。重新启动资源管理器是一个建议的解决方案,当我在谷歌上搜索启动spark shell时出现的问题时,它不断地抛出这样的消息:INFO Client:Application report for Application_1462362812913_0001 state:ACCEPTED。你只需试着运行ps-ef | grep spark并终止进程,你发现你可能已经这么做了这是我唯一能想到的。你试过使用齐柏林飞艇吗?是的,那是我用来阻止进程的。我还没有使用齐柏林飞艇,但我很快就会尝试。不过,我仍然认为应该有办法克服这个问题。