【问题标题】:How to free up resources on AWS EMR cluster?如何释放 AWS EMR 集群上的资源?
【发布时间】:2017-06-24 15:05:12
【问题描述】:

我有一个常见问题,我启动 AWS EMR 集群并通过 SSH 登录,然后运行 ​​spark-shell 以测试一些 Spark 代码,有时我失去了互联网连接,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.

谷歌搜索此错误表明分配的内存存在问题,但由于我在测试集群上使用小节点,我什至不想分配更多内存,我只想释放使用的资源重新启动@ 987654324@,但我没有看到任何“Spark”进程正在运行。

如何轻松解决此问题?是否有其他一些我应该尝试关闭/重新启动的过程,比如 hadoop、mapred、yarn 等?我不想每次遇到这种情况时都启动一个新集群。

【问题讨论】:

    标签: apache-spark hadoop-yarn emr amazon-emr elastic-map-reduce


    【解决方案1】:

    您可以为此使用 Yarn api。 在 SSH-ing 到 master 之后,运行这个

    yarn application -list
    

    查看是否有应用程序在运行。 如果有你可以使用这个命令杀死它们:

    yarn application -kill <application id>
    

    您也可以使用资源管理器 web ui 来做同样的事情。 (作为集群 EMR 页面首页的链接提供)。

    顺便说一句,您可以使用 Zeppelin 运行在 Spark-shell 上运行的相同内容,而不必担心断开连接。它在 EMR 上可用(您需要在设置集群时选择它作为应用程序之一)。

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

    【讨论】:

    • 嗯,是的,有活跃的应用程序。我尝试使用 kill 命令以及资源管理器。我还确保我杀死了所有 Spark 进程并使用以下命令停止并再次启动资源管理器:sudo /sbin/stop hadoop-yarn-resourcemanager。但我仍然收到“容器标记为失败”的错误。
    • 所以我想我没有完全理解您的问题..您是说集群上是否运行了 Spark 应用程序?顺便说一句,您不确定您是否应该停止并启动资源管理器.. 如果您执行了 kill,您可以再次运行 yarn application -list 以确保它们被杀死
    • 是的,他们在跑,我杀了他们。我再次检查了列表,没有一个在运行。我还确保所有 Spark 进程都已关闭。但是,重试启动spark-shell 仍然会引发上述这些异常。重新启动资源管理器是一个建议的解决方案,当我在启动 spark-shell 时搜索问题时不断抛出此消息:INFO Client: Application report for application_1462362812913_0001 (state: ACCEPTED)
    • 您可以简单地尝试运行 ps -ef | grep spark 并杀死您找到的进程(您可能已经这样做了,这只是我能想到的唯一想法)。你试过使用 Zeppelin 吗?
    • 是的,这就是我用来杀死进程的方法。我还没有使用 Zeppelin,但我会尽快尝试。我仍然认为应该有办法以某种方式克服这个问题。
    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2016-02-19
    • 1970-01-01
    • 2020-03-25
    相关资源
    最近更新 更多