本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Managed Service for Apache Flink 2.2
Amazon Managed Service for Apache Flink 現在支援 Apache Flink 2.2 版。這是服務的第一個主要版本升級。此頁面涵蓋 Flink 2.2 中介紹的功能,以及從 Flink 1.x 升級的重要考量。
注意
Flink 2.2 引入了需要仔細規劃的重大變更。從 1.x 升級Flink 2.2 升級的狀態相容性指南之前,請先檢閱以下和 的重大變更和棄用的完整清單。
Amazon Managed Service for Apache Flink 2.2 的新功能
Amazon Managed Service for Apache Flink 2.2 引入可能在升級時破壞現有應用程式的行為變更。與下一節的 Flink API 變更一起仔細檢閱這些變更。
程式設計組態處理
當客戶嘗試透過
env.getConfig().set()或類似 APIs.2 現在會報告例外狀況。請參閱 程式設計 Flink 組態屬性。客戶仍然可以透過支援票證請求變更特定組態 (請參閱可修改的設定)
指標移除
指標
fullRestarts已在 Flink 2.2 中移除。請改用numRestarts指標。已在 Flink 連接器
bytesRequestedPerFetch6.0.0 版中移除 KDS AWS 連接器的指標 (僅限與 Flink 2.2 相容的連接器版本)。uptime和downtime指標在 Flink 2.2 中都標示為已棄用,很快就會移除。uptime將 取代為新的指標runningTime。downtime以一或多個restartingTime、cancellingTime和 取代failingTime。如需支援指標的完整清單,請參閱指標和維度頁面。
封鎖的非憑證 IMDS 呼叫
這些允許的端點由 AWS SDK 的 DefaultCredentialsProvider (
/latest/meta-data/iam/security-credentials/) 和 DefaultAwsRegionProviderChain (/latest/dynamic/instance-identity/document) 使用,以自動設定應用程式的登入資料和區域。使用依賴非憑證 IMDS 呼叫 (例如
EC2MetadataUtils.getInstanceId()、EC2MetadataUtils.getLocalHostName()、EC2MetadataUtils.getInstanceType()或EC2MetadataUtils.getAvailabilityZone()) 的 AWS 開發套件函數的應用程式,在嘗試這些呼叫時會收到 HTTP 4xx 錯誤。如果您的應用程式將 IMDS 用於執行個體中繼資料或允許路徑以外的其他資訊,請重構程式碼以改用環境變數或應用程式組態。
唯讀根檔案系統
為了提高安全性,
/tmp其中 以外的任何相依性都是預設 flink 工作目錄,將導致:java.io.FileNotFoundException: /{path}/{filename} (Read-only file system)。檔案系統相依性可以直接來自您的程式碼,也可以間接來自您的相依性中包含的程式庫。覆寫程式碼
/tmp/中 的直接檔案系統相依性。對於來自程式庫的間接檔案系統相依性,請使用程式庫組態覆寫將檔案系統操作重新導向至/tmp/。
中斷變更和棄用
以下是 Managed Service for Apache Flink 2.2 中引進的重大變更和棄用摘要。如需介紹這些重大變更的 Apache Flink 2.0 完整版本備註,請參閱 Apache Flink 2.0 版本備註
Flink API 和語言移除
DataSet API 已移除
用於批次處理的舊版 DataSet API 已在 Flink 2.0+ 中完全移除。所有批次處理現在必須使用統一的 DataStream API。
使用 DataSet API 的應用程式必須先遷移至 DataStream API,才能升級。請參閱 DataSet 至 DataStream 轉換的 Apache Flink 遷移指南
Java 11 和 Python 3.8 已移除
Java 11 支援完全移除;Java 17 是預設和建議的執行時間。
Python 3.8 支援已移除;Python 3.12 現在為預設值。
已移除舊版連接器類別
舊版
SourceFunction和SinkFunction界面已由新的統一來源 (FLIP-27) 和接收器 (FLIP-143) APIs 取代,可更好地支援受限/未受限的雙重性、改善檢查點協調,以及更簡潔的程式設計模型。對於 Kinesis Data Streams,請使用
KinesisStreamsSink來自 的KinesisStreamsSource和flink-connector-aws-kinesis-streams:6.0.0-2.0。
已移除 Scala API
Flink Scala API 已移除。Flink 的 Java API 現在是 JVM 型應用程式的單一支援 API。
如果您的應用程式是以 Scala 撰寫,您仍然可以使用來自 Scala 程式碼的 Flink 的 Java API,主要變更是 Scala 特定的包裝函式和隱含轉換不再可用。如需更新 Scala 應用程式的詳細資訊,請參閱升級應用程式和 Flink 版本
。
狀態相容性考量事項
從 2.24 版升級至 5.6 版的 Kryo 序列化程式可能會導致狀態相容性問題。
具有集合 (
HashMap、ArrayList、HashSet) POJOs 可能有狀態相容性問題。Avro 和 Protobuf 序列化不受影響。
Flink 2.2 升級的狀態相容性指南 如需分類應用程式風險層級的詳細評估,請參閱 。
支援 Apache Flink 2.2 功能
執行期和語言支援
| 功能 | Description | 文件 |
|---|---|---|
| Java 17 執行期 | Java 17 現在是預設和建議的執行時間;Java 11 支援已移除。 | Java 相容性 |
| Python 3.12 支援 | Python 3.12 現在支援;Python 3.8 支援已移除。 | PyFlink 文件 |
狀態管理和效能
SQL 和資料表 API 功能
| 功能 | Description | 文件 |
|---|---|---|
| VARIANT 資料類型 | 原生支援半結構化資料 (JSON),無需重複字串剖析。 | 資料類型 |
| Delta 加入 | 僅維護每個金鑰的最新版本,以減少串流聯結的狀態需求; 需要客戶管理的基礎設施 (例如 Apache Fluss)。 | 聯結 |
| StreamingMultiJoinOperator | 以單一運算子執行多方聯結,消除中繼具體化。 | FLIP-516 |
| ProcessTableFunction (PTF) | 使用每個金鑰狀態和計時器,在 SQL 中直接啟用具狀態的事件驅動邏輯。 | 使用者定義的函數 |
| ML_PREDICT 函數 | 直接從 SQL 在串流/批次資料表上呼叫已註冊的 ML 模型。要求客戶綁定 ModelProvider 實作 (例如 flink-model-openai)。ModelProvider 程式庫並非由 Managed Service for Apache Flink 運送。 |
ML 預測 |
| 模型 DDL | 使用 CREATE MODEL 陳述式將 ML 模型定義為一級目錄物件。 | CREATE 陳述式 |
| 向量搜尋 | Flink SQL API 支援搜尋向量資料庫。目前沒有可用的開放原始碼VectorSearchTableSource實作;客戶必須提供自己的實作。 |
Flink SQL |
DataStream API 功能
連接器可用性
升級至 Flink 2.2 時,您也需要將連接器相依性更新為與 Flink 2.2 執行時間相容的版本。Flink 連接器獨立於 Flink 執行期發行,而且並非所有連接器都具有與 Flink 2.2 相容的版本。下表摘要說明 Amazon Managed Service for Apache Flink 中常用連接器的可用性:
| 連接器 | Flink 1.20 版本 | Flink 2.0+ 版本 | 備註 |
|---|---|---|---|
| Apache Kafka | flink-connector-kafka 3.4.0-1.20 | flink-connector-kafka 4.0.0-2.0 | 建議用於 Flink 2.2 |
| Kinesis Data Streams (來源) | flink-connector-kinesis 5.0.0-1.20 | flink-connector-aws-kinesis-streams 6.0.0-2.0 | 建議用於 Flink 2.2 |
| Kinesis Data Streams (接收器) | flink-connector-aws-kinesis-streams 5.1.0-1.20 | flink-connector-aws-kinesis-streams 6.0.0-2.0 | 建議用於 Flink 2.2 |
| Amazon Data Firehose | flink-connector-aws-kinesis-firehose 5.1.0-1.20 | flink-connector-aws-kinesis-firehose 6.0.0-2.0 | 與 Flink 2.0 相容 |
| Amazon DynamoDB | flink-connector-dynamodb 5.1.0-1.20 | flink-connector-dynamodb 6.0.0-2.0 | 與 Flink 2.0 相容 |
| Amazon SQS | flink-connector-sqs 5.1.0-1.20 | flink-connector-sqs 6.0.0-2.0 | 與 Flink 2.0 相容 |
| FileSystem (S3、HDFS) | 與 Flink 綁定 | 與 Flink 綁定 | 內建於 Flink 分佈中 — 一律可用 |
| JDBC | flink-connector-jdbc 3.3.0-1.20 | 尚未針對 2.x 發行 | 沒有可用的 Flink 2.x 相容版本 |
| OpenSearch | flink-connector-opensearch 1.2.0-1.19 | 尚未針對 2.x 發行 | 沒有可用的 Flink 2.x 相容版本 |
| Elasticsearch | 僅限舊版連接器 | 尚未針對 2.x 發行 | 考慮遷移至 OpenSearch 連接器 |
| Amazon Managed Service for Prometheus | flink-connector-prometheus 1.0.0-1.20 | 尚未針對 2.x 發行 | 沒有可用的 Flink 2.x 相容版本 |
如果您的應用程式依賴的連接器尚未有 Flink 2.x 版本,您有兩個選項:等待連接器發行相容的版本,或評估您是否可以使用替代版本取代它 (例如,使用 JDBC 目錄或自訂接收器)。
更新連接器版本時,請注意成品名稱變更 — 某些連接器在主要版本之間重新命名 (例如,在某些中繼版本
flink-connector-aws-kinesis-firehoseflink-connector-aws-firehose中,Firehose 連接器從 變更為 )。請務必檢查 Amazon Managed Service for Apache Flink 連接器文件,了解目標執行時間中支援的確切成品名稱和版本。
不支援和實驗性功能
Amazon Managed Service for Apache Flink 2.2 不支援下列功能:
具體化資料表:持續維護、可查詢的資料表快照。
自訂遙測變更:自訂指標報告程式和遙測組態。
ForSt 狀態後端:分解狀態儲存 (在開放原始碼中進行實驗)。
Java 21:開放原始碼中的實驗性支援,在 Managed Service for Apache Flink 中不支援。
已知問題
Amazon Managed Service for Apache Flink Studio
Amazon Managed Service for Apache Flink 中的 Flink 2.2 不支援 Studio 應用程式。如需詳細資訊,請參閱建立 Studio 筆記本。
Kinesis 連接器 EFO
當 Kinesis 串流進行重新分片時,連接器 v5.0.0 和 v6.0.0 中引入
KinesisStreamsSource搭配 EFO (增強廣發/SubscribeToShard) 路徑使用 的應用程式可能會失敗。這是社群中的已知問題。如需詳細資訊,請參閱 FLINK-37648。 如果 Flink 應用程式處於背壓狀態,則連接器 v5.0.0 和 v6.0.0 中引入
KinesisStreamsSource的搭配 EFO (增強廣發/SubscribeToShard) 路徑使用 的應用程式KinesisStreamsSink可能會遇到死結,導致一個或多個 TaskManagers 中的資料處理完全停止。需要強制停止操作和啟動應用程式操作才能復原應用程式。這是社群中已知問題的子案例。如需詳細資訊,請參閱 FLINK-34071。
升級體驗
Amazon Managed Service for Apache Flink 支援就地版本升級,保留您的應用程式組態、日誌、指標、標籤,以及如果狀態和二進位檔相容,則為您的應用程式狀態。如需逐步說明,請參閱 升級到 Flink 2.2:完成指南。
如需在升級期間評估狀態相容性風險及處理不相容狀態的指引,請參閱 Flink 2.2 升級的狀態相容性指南。
後續步驟
第一次使用 Flink 2.2? 如需詳細的 Apache Flink 2.2 文件,請參閱 Apache Flink 2.2 文件。
規劃升級? 請參閱 升級到 Flink 2.2:完成指南
狀態相容性問題? 請參閱 Flink 2.2 升級的狀態相容性指南
如有疑問或問題,請參閱 Managed Service for Apache Flink 故障診斷或聯絡 AWS Support。