應用問題 - Managed Service for Apache Flink

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

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

應用問題

本節包含針對 Managed Service for Apache Flink 應用程式可能會遇到的錯誤情況的解決方案。

應用程式卡在暫時狀態

如果您的應用程式維持暫時狀態 (STARTINGUPDATINGSTOPPING、、或AUTOSCALING),您可以使用Force參數設定為的StopApplication動作來停止應用程式true。您無法強制停止 DELETING 狀態的應用程式。或者,如果應用程式處於 UPDATINGAUTOSCALING 狀態,您可以將其復原至先前執行的版本。復原應用程式時,它會從上次成功的快照載入狀態資料。如果應用程式沒有快照,Managed Service for Apache Flink 會拒絕復原請求。如需有關復原應用程式的詳細資訊,請參閱RollbackApplication動作。

注意

強制停止應用程式可能會導致資料遺失或重複。為了防止應用程式重新啟動期間資料遺失或重複處理資料,我們建議您經常拍攝應用程式的快照。

應用程式卡住的原因如下:

  • 應用程式狀態太大:應用程式狀態太大或過於持續,可能會導致應用程式在檢查點或快照操作期間卡住。檢查應用程式 lastCheckpointDurationlastCheckpointSize 指標的值是否在穩定增加或異常高。

  • 應用程式的程式碼太大:確認您的應用程式 JAR 檔案小於 512 MB。不支援大於 512 MB 的 JAR 檔案。

  • 應用程式快照建立失敗:Managed Service for Apache Flink 會在 UpdateApplicationStopApplication 請求期間擷取應用程式的快照。然後,服務會使用此快照狀態,並使用更新的應用程式組態還原應用程式,以提供恰好一次的處理語義。如果自動建立快照失敗,請參閱下文的快照建立失敗

  • 從快照還原失敗:如果您移除或變更應用程式更新中的運算子,並嘗試從快照還原,則如果快照包含遺失運算子的狀態資料,還原預設將會失敗。此外,應用程式將卡在 STOPPEDUPDATING 狀態。若要變更此行為並允許還原成功,請將應用程式的AllowNonRestoredState參數變更FlinkRunConfigurationtrue。這將允許恢復操作跳過無法對應至新程式的狀態資料。

  • 應用程式初始化所花費的時間較長:Managed Service for Apache Flink 在等待 Flink 作業啟動時,會使用 5 分鐘的內部逾時 (軟體設定)。如果您的工作無法在此逾時內啟動,您將會看到如下 CloudWatch 記錄:

    Flink job did not start within a total timeout of 5 minutes for application: %s under account: %s

    如果遇到上述錯誤,表示在 Flink 作業 main 方法下定義的操作需要 5 分鐘以上的時間,從而導致建立 Flink 作業的操作在 Managed Service for Apache Flink 結束時逾時。我們建議您檢查 Flink JobManager日誌以及您的應用程序代碼,以查看該main方法是否會出現此延遲。如果沒有,則需要採取措施來解決該問題,以便在 5 分鐘內完成。

您可以使用 ListApplicationsDescribeApplication 動作來檢查應用程式狀態。

快照建立失敗

在下列情況下,Managed Service for Apache Flink 服務無法拍攝快照:

  • 應用程式超過快照限制。快照的限制為 1,000。如需詳細資訊,請參閱 快照

  • 應用程式沒有存取其來源或接收器的許可。

  • 應用程式的程式碼無法正常運作。

  • 應用程式遇到其他組態問題。

在應用程式更新期間或停止應用程式時,如果擷取快照時發生例外狀況,請將應用程式 ApplicationSnapshotConfigurationSnapshotsEnabled 屬性設定為 false,然後重試該請求。

如果應用程式的運算子未正確佈建,快照可能會失敗。如需調整運算子效能的相關資訊,請參閱運算子擴展

應用程式回到正常狀態之後,建議您將應用程式的 SnapshotsEnabled 屬性設定為 true

無法存取 VPC 中的資源

如果應用程式使用在 Amazon VPC 上執行的 VPC,請執行以下操作以確認應用程式是否可以存取其資源:

  • 檢查您的 CloudWatch 日誌是否有以下錯誤。此錯誤表示應用程式無法存取 VPC 中的資源:

    org.apache.kafka.common.errors.TimeoutException: Failed to update metadata after 60000 ms.

    如果您看到此錯誤,請確認您的路由表設定正確,並且連接器具有正確的連線設定。

    如需有關設定和分析 CloudWatch 記錄檔的資訊,請參閱日誌記錄和監控

寫入 Amazon S3 儲存貯體時資料遺失

使用 Apache Flink 1.6.2 版將輸出寫入 Amazon S3 儲存貯體時,可能會發生一些資料遺失。我們建議您在直接使用 Amazon S3 進行輸出時,使用 Apache Flink 最新支援版本。要使用阿帕奇 Flink 1.6.2 寫入 Amazon S3 存儲桶,我們建議使用 Firehose。如需有關搭配 Apache Flink Firehose 理服務搭配使用的詳細資訊,請參閱。Firehose 水槽

應用程式處於 RUNNING 狀態,但未處理資料

您可以使用 ListApplicationsDescribeApplication 動作來檢查應用程式狀態。如果您的應用程式進入RUNNING狀態,但未將資料寫入接收器,您可以透過將 Amazon CloudWatch 日誌串流新增至應用程式來解決問題。如需詳細資訊,請參閱 使用應用程式 CloudWatch 記錄選項。日誌串流包含可用於對應用程式問題進行疑難排解的訊息。

快照、應用程式更新或應用程式停止錯誤: InvalidApplicationConfigurationException

在快照操作期間或在建立快照的操作 (例如更新或停止應用程式) 期間,可能會發生如下錯誤:

An error occurred (InvalidApplicationConfigurationException) when calling the UpdateApplication operation: Failed to take snapshot for the application xxxx at this moment. The application is currently experiencing downtime. Please check the application's CloudWatch metrics or CloudWatch logs for any possible errors and retry the request. You can also retry the request after disabling the snapshots in the Managed Service for Apache Flink console or by updating the ApplicationSnapshotConfiguration through the AWS SDK

應用程式無法建立快照時,會發生此錯誤。

如果在快照操作或建立快照的操作期間遇到此錯誤,請執行下列動作:

  • 為應用程式停用快照。您可以在 Apache Flink 的受管理服務主控台中執行此操作,也可以使用動作的SnapshotsEnabledUpdate參數來執行此UpdateApplication操作。

  • 調查無法建立快照的原因。如需詳細資訊,請參閱 應用程式卡在暫時狀態

  • 當應用程式恢復正常狀態時,再重新啟用快照。

Java 的 .nio. 文件。 NoSuchFileException: /usr /本地/開放jdk-8/lib/安全/緩存器

SSL 信任存放區的位置已在先前的部署中更新。為 ssl.truststore.location 參數改用下列值:

/usr/lib/jvm/java-11-amazon-corretto/lib/security/cacerts