為 Apache Flink 應用程式建立受管理的服務 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink 之前稱為 Amazon Kinesis Data Analytics for Apache Flink。

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

為 Apache Flink 應用程式建立受管理的服務

本主題包含如何建立 Managed Service for Apache Flink 的相關資訊。

建立適用於 Apache Flink 應用程式程式碼的託管服務

本節說明您用來為 Apache Flink 應用程式的受管理服務建置應用程式程式碼的元件。

建議將 Apache Flink 應用程式的最新支援版本用於您的應用程式程式碼。如需升級 Managed Service for Apache Flink 應用程式的相關資訊,請參閱

您可以使用 Apache Maven 建置應用程式的程式碼。Apache Maven 專案使用 pom.xml 檔案來指定它使用的元件的版本。

注意

Managed Service for Apache Flink 支援最大 512 MB 的 JAR 檔案。如果使用的 JAR 檔案大於此大小,應用程式將無法啟動。

應用程式現在可以使用任何 Scala 版本的 Java API。您必須將您選擇的 Scala 標準庫捆綁到您的 Scala 應用程序中。

如需建立使用 Apache Beam 之 Managed Service for Apache Flink 應用程式的相關資訊,請參閱使用 Apache Beam

使用 Managed Service for Apache Flink 執行期 1.1.0 版及更新版本時,您可以指定您編譯應用程式時應用程式使用的 Apache Flink 版本。您可以使用-Dflink.version參數提供 Apache Flink 的版本。例如,如果您使用的是阿帕奇 Flink 1.19.1,請提供以下內容:

mvn package -Dflink.version=1.19.1

若要使用舊版 Apache Flink 建置應用程式,請參閱〈〉早期版本

為 Apache Flink 應用程式建立您的受管理服務

建立應用程式程式碼之後,請執行下列動作來建立 Apache Flink 應用程式的受管理服務:

  • 上傳應用程式的程式碼:將應用程式的程式碼上傳至 Amazon S3 儲存貯體。建立應用程式時,請指定應用程式程式碼的 S3 儲存貯體名稱和物件名稱。如需說明如何上傳應用程式程式碼的教學課程,請參閱 開始使DataStream 用 (API) 教學課程中的上傳阿帕奇 Flink 流 Java 代碼

  • 建立 Managed Service for Apache Flink:使用下列其中一種方法建立 Managed Service for Apache Flink 應用程式:

    • 使用主控台建立 Apache Flink 應用程式的受管理服務:您可以使用 AWS 主控台建立和設定應用程 AWS 式。

      使用主控台建立應用程式時,系統會為您建立應用程式的相依資源 (例如 CloudWatch 日誌串流、IAM 角色和 IAM 政策)。

      使用主控台建立應用程式時,您可以從 Managed Service for Apache Flink - 建立應用程式頁面的下拉式清單中選取版本,來指定應用程式使用的 Apache Flink 版本。

      如需如何使用主控台建立應用程式的教學課程,請參閱 開始使DataStream 用 (API) 教學課程創建並運行應用程序(控制台)中的。

    • 使用 CLI 為 Apache Flink 應用程式建立受管理服務:您可以使用 AWS CLI 建立和設定應用程 AWS 式。

      使用 CLI 建立應用程式時,還必須手動建立應用程式的相依資源 (例如 CloudWatch 日誌串流、IAM 角色和 IAM 政策)。

      使用 CLI 建立應用程式時,您可以使用 CreateApplication 動作的 RuntimeEnvironment 參數指定應用程式使用的 Apache Flink 版本。

      如需如何使用 CLI 建立應用程式的教學課程,請參閱 開始使DataStream 用 (API) 教學課程中的創建並運行應用程序(AWS CLI)

    注意

    您可以變更現RuntimeEnvironment有應用程式的。如要瞭解如何作業,請參閱阿帕奇 Flink 的就地版本升級

啟動適用於 Apache Flink 應用程式的受管理服務

建置應用程式的程式碼、將程式碼上傳至 S3,並建立 Managed Service for Apache Flink 應用程式之後,即可啟動應用程式。啟動 Managed Service Apache Flink 應用程式通常需要幾分鐘時間。

使用下列其中一種方法來啟動應用程式:

  • 使用主控台啟動 Apache Flink 應用程式的受管理服務:您可以在 AWS 主控台的應用程式頁面上選擇執行來執行應用程 AWS 式。

  • 使用 AWS API 啟動適用於 Apache Flink 應用程式的受管理服務:您可以使用StartApplication動作執行應用程式。

驗證您的阿帕奇 Flink 應用程序的託管服務

您可以驗證應用程式是否正常運作,方式如下:

  • 使用 CloudWatch 日誌:您可以使用 CloudWatch 日誌和 CloudWatch 日誌洞察來驗證您的應用程序是否正常運行。如需將 CloudWatch 記錄與 Apache Flink 應用程式的受管理服務搭配使用的相關資訊,請參閱日誌記錄和監控

  • 使用 CloudWatch 指標:您可以使用 CloudWatch 指標來監控應用程式的活動,或應用程式用於輸入或輸出的資源中的活動 (例如 Kinesis 串流、Firehose 串流或 Amazon S3 儲存貯體)。如需有關指 CloudWatch 標的詳細資訊,請參閱 Amazon CloudWatch 使用者指南中的使用指標

  • 監控輸出位置:如果應用程式將輸出寫入某個位置 (例如 Amazon S3 儲存貯體或資料庫),您可以為寫入的資料監控該位置。

為您的 Apache Flink 應用程式的受管理服務啟用系統復原

透過系統復原功能,您可以在適用於 Apache Flink 的 Amazon 受管服務上,達到執行中的 Apache Flink 應用程式的更高可用性。選擇使用此組態可讓服務在執行UpdateApplication或執行程式碼或組態錯誤等動作時,自動將應用程式還原為先前autoscaling執行的版本。

注意

若要使用系統還原功能,您必須透過更新應用程式來選擇加入。現有的應用程式預設不會自動使用系統復原。

運作方式

當您啟動應用程式作業 (例如更新或擴展動作) 時,Apache Flink 的 Amazon 受管服務會先嘗試執行該作業。如果偵測到造成作業無法成功發生的問題 (例如程式碼錯誤或權限不足),服務就會自動啟動作RollbackApplication業。

復原會嘗試將應用程式還原到成功執行的先前版本,以及相關的應用程式狀態。如果復原成功,您的應用程式會使用舊版繼續以最短的停機時間來處理資料。如果自動復原也失敗,適用於 Apache Flink 的 Amazon 受管服務會將應用程式轉換為READY狀態,以便您可以採取進一步的動作,包括修正錯誤和重試作業。

您必須選擇加入才能使用自動系統復原。從這一點開始,您可以使用控制台或 API 對應用程序上的所有操作啟用它。

下列UpdateApplication動作要求範例會啟用應用程式的系統復原:

{ "ApplicationName": "MyApplication", "CurrentApplicationVersionId": 1, "ApplicationConfigurationUpdate": { "ApplicationSystemRollbackConfigurationUpdate": { "RollbackEnabledUpdate": "true" } } }

常用案例

下列案例說明自動系統復原的好處:

  • 應用程式更新:如果您在透過 main 方法初始化 Flink 工作時使用新程式碼更新應用程式有錯誤,則自動復原會允許還原先前的工作版本。其他有助於系統復原的更新案例包括:

    • 如果您的應用程式已更新為以高於最大平行處理原則的平行處理原則執行。

    • 如果您的應用程式已更新為針對 VPC 應用程式使用不正確的子網路執行,而導致 Flink 工作啟動期間失敗。

  • Flink 版本升級:當您升級至新的 Apache Flink 版本且升級的應用程式遇到快照相容性問題時,系統還原可讓您自動還原至先前的 Flink 版本。

  • AutoScaling:由於快照與 Flink 工作圖表之間的運算子不符,應用程式擴展但遇到從儲存點還原的問題。

操作 API

為了提供更好的可見性,適用於 Apache Flink 的 Amazon 受管服務具有兩個與應用程式操作相關的 API,可協助您追蹤故障和相關系統復原。

ListApplicationOperations

此 API 會以反向時間順序列出在應用程式上執行的所有作業 UpdateApplication MaintenanceRollbackApplication,包括、和其他作業。下列ListApplicationOperations動作要求範例會列出應用程式的前 10 個應用程式作業:

{ "ApplicationName": "MyApplication", "Limit": 10 }

下列範例要求ListApplicationOperations可協助篩選清單,以便在應用程式上先前的更新:

{ "ApplicationName": "MyApplication", "operation": "UpdateApplication" }

DescribeApplicationOperation

此 API 提供列出之特定作業的詳細資訊ListApplicationOperations,包括失敗原因 (如果適用)。下列DescribeApplicationOperation動作要求範例會列出特定應用程式作業的詳細資訊:

{ "ApplicationName": "MyApplication", "OperationId": "xyzoperation" }

如需故障診斷資訊,請參閱系統復原最佳做法