amazon-web-services - 一段时间后如何自动终止AWS EMR集群

标签 amazon-web-services amazon-emr amazon-cloudwatch

我目前手头有一个任务,要在一段设定的时间(基于某些指标)之后终止长时间运行的EMR集群。 Google Dataproc在此处列出的称为“群集预定删除”的功能中具有此功能:https://cloud.google.com/dataproc/docs/concepts/configuring-clusters/scheduled-deletion

这在EMR上是可能的吗?也许使用Cloudwatch指标?还是我可以编写一个长时间运行的jar,该jar将位于EMR主节点上,并且只对 yarn 进行轮询以获取一些空闲时间度量,然后在设置的时间段后关闭集群?

编辑:更多说明。我想要一些功能,其中群集根据闲置时间x终止。例如如果集群已经启动了一段时间,但没有工作运行了1个小时,而集群只是坐在那里无所事事,那么我希望能够终止集群。

最佳答案

最简单的方法将用于Amazon EMR Metrics and Dimensions for Amazon CloudWatch。有一个isIdle bool 值,“表明集群不再执行工作”。

您可以创建一个CloudWatch警报,如果该警报显示True的时间超过x分钟,则触发该警报。这会将消息发送到Amazon SNS,后者可以触发Lambda函数以关闭集群。

组件:

  • Amazon CloudWatch警报
  • Amazon SNS队列
  • AWS Lambda函数

  • 更新:这显然不合适(请参见下面的评论)。

    另一种方法是:
  • 使用 Amazon CloudWatch Events 每x秒调度一次Lambda函数
  • Lambda函数查找具有特定标签的任何群集,这些标签指示等待关闭的时间(例如40分钟)。如果标签不存在,则群集保持不变。
  • Lambda函数查询集群状态(以某种方式-可能通过Hadoop API调用),然后:
  • 如果集群处于空闲状态,并且没有“Idle since”标记,请添加一个具有当前时间戳记的“Idle since”标记
  • 如果集群空闲,并且距Idle since标记中的时间戳超过x分钟,请终止集群。
  • 如果集群不是空闲的,请删除“Idle since”标记(如果存在)
  • 关于amazon-web-services - 一段时间后如何自动终止AWS EMR集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49806543/

    相关文章:

    amazon-web-services - AWS EMR 上的奇怪 Spark 错误

    apache-spark - application_(状态:ACCEPTED)的应用程序报告永远不会结束Spark提交(YARN上的Spark 1.2.0)

    amazon-cloudwatch - 如何在 CloudWatch 订阅中分配特定的 Kinesis 碎片

    amazon-web-services - 无法创建集群。启动 Redshift 集群时 VPC 显示为灰色

    amazon-web-services - 为通过 UserData 创建 AMI 准备 Windows 2016 EC2 实例

    hadoop - Amazon EMR服务的Sqoop导入错误 “Could not load db driver class”

    amazon-web-services - Cloudwatch 日志警报 - 如何在电子邮件通知中包含错误/异常/堆栈跟踪数据

    amazon-web-services - 只需要记录 Cloudwatch 中的错误

    Python lambda 函数返回 KeyError

    ruby-on-rails - 将 Rails 应用程序连接到 Amazon RDS 服务器。在控制台中工作,但现在页面不会加载