Amazon Glue 直播的维护窗口 - Amazon Glue
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Glue 直播的维护窗口

Amazon Glue 定期执行维护活动。在这些维护时段内, Amazon Glue 需要重新启动您的直播作业。您可以通过指定维护时段来控制何时重新启动作业。在本节中,我们概述了可以在何处设置维护时段以及应考虑的特定行为。

设置维护时段

您可以使用 Amazon Glue Studio 或 API 设置维护时段。

在 Amazon Glue Studio 中设置维护窗口

您可以在 Amazon Glue 流式处理作业的 “任务详情” 页面中指定维护时段。您可以以 GMT 为单位指定日期和时间。 Amazon Glue 将在指定的时间窗口内重新启动您的作业。

在 Amazon Glue Studio 中指定维护时段

在 API 中设置维护时段

您也可以在 Create Job API 中设置维护时段。以下是通过 API 配置维护时段的示例。

aws glue create-job —name jobName —role roleArnForTheJob —command Name=gluestreaming,ScriptLocation=s3-path-to-the-script --maintenance-window="Sun:10"

命令示例如下:

aws glue create-job —name testMaintenance —role arn:aws:iam::012345678901:role/Glue_DefaultRole —command Name=gluestreaming,ScriptLocation=s3://glue-example-test/example.py —maintenance-window="Sun:10

维护时段行为

Amazon Glue 通过一系列步骤来决定何时重启作业:

  1. 启动新的流式处理任务时, Amazon Glue 首先检查任务运行是否存在超时。超时允许您配置作业的结束时间。如果超时时间少于 7 天,则作业将不会重新启动。

  2. 如果超时时间超过 7 天,则 Amazon Glue 检查是否为该作业配置了维护时段。如果是,则会选择该窗口,并将该窗口分配给作业运行。 Amazon Glue 将在指定维护时段后的 3 小时内重新启动作业。例如,如果您将维护时段设置为星期一格林威治标准时间上午 10:00,则您的作业将在格林威治标准时间上午 10:00 至下午 1:00 之间重新启动。

  3. 如果未配置维护时段,则 Amazon Glue 会自动将重启时间设置为作业运行启动时间后 7 天。例如,如果您在格林威治标准时间 2024 年 7 月 1 日上午 12:00 启动任务,但未指定维护时段,则您的任务将设置为格林威治标准时间 2024 年 7 月 8 日上午 12:00 重启。

    注意

    如果您已经在运行流媒体作业,那么从 2024 年 7 月 1 日起,这一变化将对您产生影响。在 6 月 30 日之前,您将有时间配置维护时段。7 月 1 日之后,根据本文档,您启动的所有流媒体作业都将重新启动。如果您需要任何其他支持,可以联系 Suppor Amazon t。

  4. 有时, Amazon Glue 可能无法重新启动作业,尤其是在未处理正在进行的微批处理时。在这些情况下,作业不会中断。在这些情况下, Amazon Glue 将在 14 天后重新启动作业,在这种情况下,维护时段将不被遵守。

Job 监控

您可以在 Amazon Glue Studio 监控页面中监控作业。

要查看流式处理作业的预计下次重启时间,请在 “监控” 页面的 “任务运行” 表中显示相应列。

  1. 点击表格右上角的齿轮图标。

    在 Amazon Glue Studio 中指定维护时段
  2. 向下滚动,然后打开 “预计重启时间” 列。UTC 和本地时间选项均可用。

    在 Amazon Glue Studio 中指定维护时段
  3. 然后,您可以查看表中的列。

    在 Amazon Glue Studio 中指定维护时段

原始作业的状态将为 “已过期”,而新的作业实例的状态将为 “正在运行”。重新启动的新作业运行将有一个任务运行 ID,由初始作业运行 ID 加上代表重启计数的前缀 “restart_” 的串联组成。例如,如果初始作业运行 ID 为jr_1234,则重新启动的作业运行将具有第一次重启jr1234_restart_1的 ID。第二次重启将jr1234_restart_2用于第二次重启,依此类推。

您的重试尝试不会因为重启而受到影响。如果运行失败并且由于自动重试而开始了新的运行,则重启计数器将再次从 1 开始。例如,如果运行失败jr_1234_attempt_3_restart_5,则自动重试将开始新的运行,ID 为:jr_id1_attempt_4,当此尝试在 7 天后重新启动时,新的运行 ID 将为。jr_id1_attempt_4_restart_1

数据丢失处理

在维护重启期间, Amazon Glue Streaming 会遵循一个确保数据完整性和上一次作业运行与重新启动的作业运行之间一致性的流程。请注意,这并 Amazon Glue 不能保证两次任务重启之间的数据完整性和一致性,我们建议在处理流式作业中的重复数据时考虑架构问题。

  1. 检测维护重启条件: Amazon Glue 流式传输监视指明何时应触发维护重启的情况,例如 7 天后达到维护窗口或 14 天后需要硬重启的情况。

  2. 调用优雅终止:当满足维护重启条件时, Amazon Glue Streaming 会为当前正在运行的作业启动一个优雅的终止流程。此过程包括以下步骤:

    1. 停止摄取新数据:流式传输作业停止使用来自输入源(例如 Kafka 主题、Kinesis 直播或文件)的新数据。

    2. 处理待处理数据:作业继续处理其内部缓冲区或队列中已存在的任何数据。

    3. 提交偏移量和检查点:任务将最新的偏移量或检查点提交到外部系统(例如 Kafka、Kinesis 或 Amazon S3),以确保重新启动的任务可以从上一个任务中断的地方继续运行。

  3. 重新启动作业:正常终止过程完成后, Amazon Glue Streaming 将使用保留的状态和检查点重新启动作业。重新启动的作业从上次提交的偏移量或检查点开始处理,确保没有数据丢失或重复。

  4. 恢复数据处理:重新启动的作业将从上一个作业中断的地方恢复数据处理。它继续从输入源提取新数据,从上次提交的偏移量或检查点开始,并根据定义的 ETL 逻辑处理数据。