

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS Glue 串流的維護時段
<a name="glue-streaming-maintenance"></a>

AWS Glue 會定期執行維護活動。在這些維護時段期間， AWS Glue 將需要重新啟動您的串流任務。您可以透過指定維護時段，來控制任務重新啟動的時間。在本節中，我們概述了您可以設定維護時段的位置，以及應考慮的特定行為。

**Topics**
+ [設定維護時段](#glue-streaming-maintenance-setup)
+ [維護時段行為](#glue-streaming-maintenance-behavior)
+ [監控任務](#glue-streaming-maintenance-job-monitoring)
+ [資料遺失處理](#glue-streaming-maintenance-data-loss-handling)

## 設定維護時段
<a name="glue-streaming-maintenance-setup"></a>

您可以使用 AWS Glue Studio 或 APIs設定維護時段。

### 在 AWS Glue Studio 中設定維護時段
<a name="glue-streaming-maintenance-setup-studio"></a>

您可以在 AWS Glue 串流**任務的任務詳細資訊**頁面中指定維護時段。您可以在 GMT 中指定日期和時間。 AWS Glue 將在指定的時段內重新啟動您的任務。

![在 AWS Glue Studio 中指定維護時段](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-maintenance-windows-1.png)


### 在 API 中設定維護時段
<a name="glue-streaming-maintenance-setup-api"></a>

您也可以在 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
```

## 維護時段行為
<a name="glue-streaming-maintenance-behavior"></a>

AWS Glue 會經歷一系列步驟，以決定何時重新啟動任務：

1. 啟動新的串流任務時， AWS Glue 首先檢查是否有與任務執行相關聯的逾時。逾時可讓您設定任務的結束時間。如果逾時少於 7 天，則任務不會重新啟動。

1. 如果逾時超過 7 天，則 會 AWS Glue 檢查是否已為任務設定維護時段。如果是這樣，就會取得該時段，並將該時段指派給任務執行。 AWS Glue 將在指定的維護時段後 3 小時內重新啟動任務。例如，如果您在 GMT 星期一上午 10：00 設定維護時段，您的任務將在 GMT 上午 10:00 到下午 1:00 之間重新啟動。

1. 如果未設定維護時段， AWS Glue 會自動將重新啟動時間設定為任務執行啟動時間後 7 天。例如，如果您在 2024 年 7 月 1 日上午 12:00 (GMT) 啟動了您的任務，但未指定維護時段，則您的任務將設定為在 2024 年 7 月 8 日上午 12:00 (GMT) 重新啟動。
**注意**  
如果您已在執行串流任務，則此變更將自 2024 年 7 月 1 日起影響您。您將有時間在 6 月 30 日之前設定您的維護時段。在 7 月 1 日後，您啟動的任何串流任務都會根據此文件重新啟動。如果您需要任何其他支援，您可以聯絡 AWS Support。

1. 有時， AWS Glue 可能無法重新啟動任務，尤其是在未處理進行中的微批次時。在這些情況下，任務不會中斷。在這些執行個體中， AWS Glue 會在 14 天後重新啟動任務，在此情況下，不會遵守維護時段。

## 監控任務
<a name="glue-streaming-maintenance-job-monitoring"></a>

您可以在 AWS Glue Studio 監控頁面中**監控**任務。

若要查看串流任務的預期下次重新啟動時間，請在**監控**頁面上顯示任務執行資料表上的資料欄。

1. 按一下資料表右上角的齒輪圖示。  
![在 AWS Glue Studio 中指定維護時段](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-maintenance-windows-2.png)

1. 向下捲動，然後開啟**預期重新啟動時間**資料欄。UTC 和本地時間選項都可使用。  
![在 AWS Glue Studio 中指定維護時段](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-maintenance-windows-3.png)

1. 然後，您可以檢視資料表中的資料欄。  
![在 AWS Glue Studio 中指定維護時段](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/streaming-maintenance-windows-4.png)

原始任務將具有 "EXPIRED" 狀態，而新的任務執行個體將具有 "RUNNING" 狀態。重新啟動的新任務執行將具有任務執行 ID 作為初始任務執行 ID 的串連，加上代表重新啟動計數的前綴 "restart\_"。例如，如果初始任務執行 ID 為 `jr_1234`，則重新啟動的任務執行會在第一次重新啟動時具有 ID `jr1234_restart_1`。第二次重新啟動將是 `jr1234_restart_2`，以此類推。

由於重新啟動，您的重試嘗試不會受到影響。如果執行失敗，且因為自動重試而啟動新的執行，重新啟動計數器將再次從 1 開始。例如，如果在 `jr_1234_attempt_3_restart_5` 執行失敗，則自動重試將使用 ID `jr_id1_attempt_4` 啟動新的執行,當此嘗試在 7 天後重新啟動時，新的執行 ID 將為 `jr_id1_attempt_4_restart_1`。

## 資料遺失處理
<a name="glue-streaming-maintenance-data-loss-handling"></a>

在維護重新啟動期間， AWS Glue 串流會遵循程序，以確保先前任務執行與重新啟動任務執行之間的資料完整性和一致性。請注意， AWS Glue 不保證任務重新啟動之間的資料完整性和一致性，建議您考慮架構，以處理串流任務中重複的資料。

1. 偵測維護重新啟動條件： AWS Glue 串流會監控指出何時應觸發維護重新啟動的條件，例如 7 天後達到維護時段，或 14 天後需要硬重新啟動。

1. 叫用正常終止：當符合維護重新啟動條件時， AWS Glue 串流會為目前正在執行的任務啟動正常終止程序。此程序涉及下列步驟：

   1. 停止擷取新資料：串流任務會停止耗用來自輸入來源的新資料 (例如 Kafka 主題、Kinesis 串流或檔案)。

   1. 處理待定資料：任務會繼續處理內部緩衝區或佇列中已存在的任何資料。

   1. 遞交位移和檢查點：任務會將最新的位移或檢查點遞交至外部系統 (例如 Kafka、Kinesis 或 Amazon S3)，以確保重新啟動的任務可以從上一個任務停止的位置繼續執行。

1. 重新啟動任務：在正常終止程序完成後， AWS Glue 串流會使用保留狀態和檢查點重新啟動任務。重新啟動的任務會從上一個遞交的位移或檢查點繼續處理，以確保沒有資料遺失或重複。

1. 繼續資料處理：重新啟動的任務會從上一個任務停止的位置繼續處理資料。從上一個遞交的位移或檢查點開始，其會繼續從輸入來源擷取新資料，並根據定義的 ETL 邏輯處理資料。