何时在中设置EMR活动 CloudWatch - Amazon EMR

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

何时在中设置EMR活动 CloudWatch

对于某些投票(例如APIs DescribeCluster DescribeStep ListClusters、和),设置 CloudWatch 事件可以缩短对更改的响应时间并腾出服务配额。例如,如果您将 Lambda 函数设置为在集群状态更改时运行(例如步骤完成或集群终止时),则可以使用该触发器启动工作流中的下一个操作,而不是等待下一次轮询。否则,如果您有专用 Amazon EC2 实例或 Lambda 函数不断轮询变更,则不仅会浪费计算资源,还可能达到服务配额。EMR API

以下是您可以通过迁移到事件驱动架构而受益的几个案例。

案例 1:EMR使用DescribeCluster API呼叫完成步骤进行轮询

例 EMR使用 DescribeCluster API呼叫完成步骤进行轮询

常见的模式是向正在运行的集群提交步骤,然后轮询 Amazon EMR 以了解有关该步骤的状态,通常使用 DescribeCluster 或 DescribeStep APIs。此任务也可以通过连接中的 Amazon EMR Step 状态更改事件来以最小的延迟完成。

此事件在其负载中包含以下信息。

{ "version": "0", "id": "999cccaa-eaaa-0000-1111-123456789012", "detail-type": "EMR Step Status Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T20:53:09Z", "region": "us-east-1", "resources": [], "detail": { "severity": "ERROR", "actionOnFailure": "CONTINUE", "stepId": "s-ZYXWVUTSRQPON", "name": "CustomJAR", "clusterId": "j-123456789ABCD", "state": "FAILED", "message": "Step s-ZYXWVUTSRQPON (CustomJAR) in Amazon EMR cluster j-123456789ABCD (Development Cluster) failed at 2016-12-16 20:53 UTC." } }

在详细地图中,Lambda 函数可以解析 “状态”、“” 或 stepId “clusterId” 以查找相关信息。

案例 2:轮EMR询可用集群以运行工作流程

例 轮EMR询可用集群以运行工作流程

运行多个集群的客户的一种模式是在集群可用时立即在集群上运行工作流。如果有许多集群在运行,并且需要在等待的集群上执行工作流程,则一种模式可能是EMR使用轮询 DescribeCluster 或 ListClusters API调用可用集群。减少知道集群何时准备好执行步骤的延迟的另一种方法是在中处理 Amazon EMR 集群状态更改事件。

此事件在其负载中包含以下信息。

{ "version": "0", "id": "999cccaa-eaaa-0000-1111-123456789012", "detail-type": "EMR Cluster State Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T20:43:05Z", "region": "us-east-1", "resources": [], "detail": { "severity": "INFO", "stateChangeReason": "{\"code\":\"\"}", "name": "Development Cluster", "clusterId": "j-123456789ABCD", "state": "WAITING", "message": "Amazon EMR cluster j-123456789ABCD ..." } }

对于此事件,可以将 Lambda 函数设置为在集群状态更改为后立即向其发送等待中的工作流程。WAITING

案例 3:轮EMR询集群终止

例 轮询EMR集群终止

客户运行多个EMR集群的一种常见模式是向 Amazon EMR 轮询已终止的集群,这样就不会再向其发送工作了。您可以通过 DescribeCluster 和 ListClusters API调用或使用中的 Amazon EMR 集群状态更改事件来实现此模式。

集群终止时,发出的事件类似于以下示例。

{ "version": "0", "id": "1234abb0-f87e-1234-b7b6-000000123456", "detail-type": "EMR Cluster State Change", "source": "aws.emr", "account": "123456789012", "time": "2016-12-16T21:00:23Z", "region": "us-east-1", "resources": [], "detail": { "severity": "INFO", "stateChangeReason": "{\"code\":\"USER_REQUEST\",\"message\":\"Terminated by user request\"}", "name": "Development Cluster", "clusterId": "j-123456789ABCD", "state": "TERMINATED", "message": "Amazon EMR Cluster jj-123456789ABCD (Development Cluster) has terminated at 2016-12-16 21:00 UTC with a reason of USER_REQUEST." } }

有效载荷的 “详细信息” 部分包括可以处理的 clusterId 和状态。