作者:徐榜江(雪盡) @ 阿里云
Apache Flink PMC(項(xiàng)目管理委員)很高興地宣布發(fā)布 Apache Flink 1.17.0。Apache Flink 是領(lǐng)先的流處理標(biāo)準(zhǔn),流批統(tǒng)一的數(shù)據(jù)處理概念在越來越多的公司中得到認(rèn)可。得益于我們出色的社區(qū)和優(yōu)秀的貢獻(xiàn)者,Apache Flink 在 Apache 社區(qū)中一直保持著快速增長(zhǎng),并且是最活躍的社區(qū)之一。Flink 1.17 有 172 位貢獻(xiàn)者熱情參與,完成了 7 個(gè) FLIP 和 600 多個(gè) issue,為社區(qū)帶來了許多令人興奮的新功能和改進(jìn)。
邁向 Streaming Warehouse
為了在 流式數(shù)倉(cāng) 領(lǐng)域?qū)崿F(xiàn)更高效的處理,F(xiàn)link 1.17 對(duì)批處理和流處理的性能和語(yǔ)義都進(jìn)行了實(shí)質(zhì)性的改進(jìn)。這些增強(qiáng)措施代表了朝著創(chuàng)建一個(gè)更高效、更簡(jiǎn)化的數(shù)據(jù)倉(cāng)庫(kù),能夠?qū)崟r(shí)處理大量數(shù)據(jù)的目標(biāo)邁進(jìn)了一大步。
針對(duì)批處理,此次發(fā)布包含了下述幾項(xiàng)新特性和改進(jìn)。
Streaming Warehouse API: FLIP-282 在 Flink SQL 中引入了新的 Delete 和 Update API,它們可以在 Batch 模式下工作。在此基礎(chǔ)上,外部存儲(chǔ)系統(tǒng)比如 Flink Table Store 可以通過這些新的 API 實(shí)現(xiàn)行級(jí)刪除和更新。同時(shí)對(duì) ALTER TABLE 語(yǔ)法進(jìn)行了增強(qiáng),包括 ADD/MODIFY/DROP 列、主鍵和 watermark 的能力,這些增強(qiáng)使得用戶更容易維護(hù)元數(shù)據(jù)。
Batch 性能優(yōu)化: 在 Flink 1.17 中,批處理作業(yè)的執(zhí)行在性能、穩(wěn)定性和可用性方面都得到了顯著改進(jìn)。就性能而言,通過策略優(yōu)化和算子優(yōu)化,如新的 join-reorder 算法和自適應(yīng)的本地哈希聚合優(yōu)化、Hive 聚合函數(shù)改進(jìn)以及混合 shuffle 模式優(yōu)化,這些改進(jìn)帶來了 26% 的 TPC-DS 性能提升。就穩(wěn)定性而言,F(xiàn)link 1.17 預(yù)測(cè)執(zhí)行可以支持所有算子,自適應(yīng)的批處理調(diào)度可以更好的應(yīng)對(duì)數(shù)據(jù)傾斜場(chǎng)景。就可用性而言,批處理作業(yè)所需的調(diào)優(yōu)工作已經(jīng)大大減少。自適應(yīng)的批處理調(diào)度已經(jīng)默認(rèn)開啟,混合 shuffle 模式現(xiàn)在可以兼容預(yù)測(cè)執(zhí)行和自適應(yīng)批處理調(diào)度,同時(shí)所需的各種配置都進(jìn)行了簡(jiǎn)化。
SQL Client/Gateway: Apache Flink 1.17 支持了 SQL Client 的 gateway 模式,允許用戶將 SQL 提交給遠(yuǎn)端的 SQL Gateway。同時(shí),用戶可以在 SQL Client 中使用 SQL 語(yǔ)句來管理作業(yè),包括查詢作業(yè)信息和停止正在運(yùn)行的作業(yè)等。這表示 SQL Client/Gateway 已經(jīng)演進(jìn)為一個(gè)作業(yè)管理、提交工具。
針對(duì)流處理,F(xiàn)link 1.17 完成了以下功能和改進(jìn):
Streaming SQL 語(yǔ)義增強(qiáng): 非確定性操作可能會(huì)導(dǎo)致不正確的結(jié)果或異常,這在 Streaming SQL 中是一個(gè)極具挑戰(zhàn)性的話題。Flink 1.17 修復(fù)了不正確的優(yōu)化計(jì)劃和功能問題,并且引入了實(shí)驗(yàn)性功能 PLAN_ADVICE,PLAN_ADVICE 可以為 SQL 用戶提供潛在的正確性風(fēng)險(xiǎn)提示和 SQL 優(yōu)化建議。
Checkpoint 改進(jìn): 通用增量 Checkpoint(GIC)增強(qiáng)了 Checkpoint 的速度和穩(wěn)定性,Unaligned Checkpoint (UC) 在作業(yè)反壓時(shí)的穩(wěn)定性也在 Flink 1.17 中提高至生產(chǎn)可用級(jí)別。此外,該版本新引入一個(gè) REST API 使得用戶可以觸發(fā)自定義 Checkpoint 類型的 Checkpoint。
Watermark 對(duì)齊完善: 高效的 watermark 處理直接影響 event time 作業(yè)的執(zhí)行效率,在 Flink 1.17 中, FLIP-217 通過對(duì) Source 算子內(nèi)部的 split 進(jìn)行數(shù)據(jù)對(duì)齊發(fā)射,完善了 watermark 對(duì)齊功能。這一改進(jìn)使得 Source 中 watermark 進(jìn)度更加協(xié)調(diào),從而減輕了下游算子的緩存過多數(shù)據(jù),增強(qiáng)了流作業(yè)執(zhí)行的整體效率。
StateBackend 升級(jí): 此次發(fā)布將 FRocksDB 的版本升級(jí)到了 6.20.3-ververica-2.0,對(duì) RocksDBStateBackend 帶來了許多改進(jìn)。例如在 slot 之間共享內(nèi)存,支持 Apple Silicon 芯片組,如 Mac M1。Flink 1.17 版本還提供了參數(shù)擴(kuò)大 TaskManager 的 slot 之間共享內(nèi)存的范圍,提升了 TaskManager 中 slot 內(nèi)存使用不均勻時(shí)的效率。
批處理
作為的流批一體的計(jì)算引擎,Apache Flink 在流處理領(lǐng)域持續(xù)領(lǐng)先,為了進(jìn)一步增強(qiáng)其批處理能力,F(xiàn)link 社區(qū)貢獻(xiàn)者在 Flink 1.17 版本的批處理的性能優(yōu)化和生態(tài)完善方面付出了諸多努力。 這讓用戶可以更輕松地基于 Flink 構(gòu)建 Streaming Warehouse。
預(yù)測(cè)執(zhí)行
在此次發(fā)布中,預(yù)測(cè)執(zhí)行支持了 Sink 算子。 在之前的版本中,為了避免不穩(wěn)定性或不正確的結(jié)果,預(yù)測(cè)執(zhí)行不會(huì)發(fā)生在 Sink 算子上。Flink 1.17 豐富了 Sink 的上下文信息,使得 新版 Sink 和 OutputFormat Sink 都能獲取到當(dāng)前執(zhí)行實(shí)例的序號(hào)(attempt number),根據(jù)這個(gè)序號(hào),Sink 算子可以將同一子任務(wù)的多個(gè)不同實(shí)例生成的數(shù)據(jù)進(jìn)行隔離,即使這些實(shí)例在同時(shí)運(yùn)行。FinalizeOnMaster 接口也進(jìn)行了改進(jìn),以便 OutputFormat Sink 可以知道哪些序號(hào)的實(shí)例成功產(chǎn)出了數(shù)據(jù),從而正確地提交結(jié)果數(shù)據(jù)。當(dāng) Sink 的開發(fā)者確定該 Sink 可以正確的支持多個(gè)并發(fā)實(shí)例同時(shí)運(yùn)行,就可以使其實(shí)現(xiàn)裝飾性接口 SupportsConcurrentExecutionAttempts,從而允許其進(jìn)行預(yù)測(cè)執(zhí)行。一些內(nèi)置 Sink 已經(jīng)支持了預(yù)測(cè)執(zhí)行,包括 DiscardingSink、PrintSinkFunction、PrintSink、FileSink、FileSystemOutputFormat 和 HiveTableSink。
此外,預(yù)測(cè)執(zhí)行的慢任務(wù)的檢測(cè)也獲得了改進(jìn)。在之前,在決定哪些任務(wù)是慢任務(wù)時(shí)只考慮了任務(wù)的執(zhí)行時(shí)間?,F(xiàn)在,慢任務(wù)檢測(cè)器還會(huì)考慮了任務(wù)的輸入數(shù)據(jù)量。執(zhí)行時(shí)間較長(zhǎng)的任務(wù),如果消費(fèi)了更多的數(shù)據(jù),不一定會(huì)被視為慢任務(wù)。這一改進(jìn)有助于消除數(shù)據(jù)傾斜對(duì)慢任務(wù)檢測(cè)的負(fù)面影響。
自適應(yīng)批處理調(diào)度器
在此次發(fā)布中,自適應(yīng)批處理調(diào)度器成為了批作業(yè)的默認(rèn)調(diào)度器。該調(diào)度器可以根據(jù)每個(gè) job vertex 處理的數(shù)據(jù)量,自動(dòng)為其設(shè)置合適的并行度。這也是唯一一個(gè)支持預(yù)測(cè)執(zhí)行的調(diào)度器。
自適應(yīng)批調(diào)度器的配置得到了改進(jìn),以提高其易用性。用戶不再需要顯式將全局默認(rèn)并行度設(shè)置為-1 來開啟自動(dòng)推導(dǎo)并行度功能?,F(xiàn)在,如果設(shè)置了全局默認(rèn)并行度,其會(huì)被用做自動(dòng)推導(dǎo)并行度的上界。一些配置項(xiàng)的名稱也進(jìn)行了改進(jìn),以便于用戶理解。
此外,自適應(yīng)批處理調(diào)度器的能力也得到了增強(qiáng)?,F(xiàn)在它可以根據(jù)細(xì)粒度的數(shù)據(jù)分布信息,將數(shù)據(jù)更均勻的分配給下游任務(wù)。自動(dòng)推導(dǎo)的并行度現(xiàn)在也不再被限制為 2 的冪。
混合 Shuffle 模式
此次發(fā)布中,混合 Shuffle 模式帶來了多個(gè)重要改進(jìn):
混合 Shuffle 模式現(xiàn)在支持自適應(yīng)批調(diào)度器和預(yù)測(cè)執(zhí)行。
混合 Shuffle 模式現(xiàn)在支持重用中間數(shù)據(jù),這帶來了顯著的性能改進(jìn)。
提高了穩(wěn)定性,避免了在大規(guī)模生產(chǎn)環(huán)境中出現(xiàn)的穩(wěn)定性問題。
更多詳細(xì)信息可以在 混合Shuffle 部分找到。
TPC-DS
從 Flink 1.16 開始,F(xiàn)link 社區(qū)持續(xù)優(yōu)化批處理引擎的性能。在 Flink 1.16 中,引入了動(dòng)態(tài)分區(qū)裁剪優(yōu)化,但并非所有的 TPC-DS 查詢都可以被優(yōu)化。Flink 1.17 對(duì)該優(yōu)化的算法進(jìn)行了改進(jìn),使得大部分 TPC-DS 查詢都可以被優(yōu)化。此外,F(xiàn)link 1.17 中引入了動(dòng)態(tài)規(guī)劃 join-reorder 算法,與之前版本的算法相比,該算法效果更好,但搜索空間更大。優(yōu)化器可以根據(jù)查詢中 join 個(gè)數(shù)自動(dòng)選擇合適的 join-reorder 算法,用戶無需關(guān)心 join-reorder 算法的細(xì)節(jié)(注意:join-reorder 默認(rèn)未開啟,在運(yùn)行 TPC-DS 時(shí)需要顯式啟用)。在算子層面,F(xiàn)link 1.17 引入了動(dòng)態(tài) local hash aggregation 策略,可以根據(jù)數(shù)據(jù)的分布動(dòng)態(tài)確定是否需要在本地進(jìn)行聚合操作以提高性能。在運(yùn)行時(shí)層面上,此次發(fā)布移除了一些不必要的虛擬函數(shù)調(diào)用,以加快執(zhí)行速度。從整體測(cè)試結(jié)果上看,相比 Flink 1.16,對(duì)于分區(qū)表在 10T 數(shù)據(jù)集下 Flink 1.17 有 26% 的性能提升。

SQL Client/Gateway
Apache Flink 1.17 引入了一個(gè)名為"gateway 模式" 的新功能,允許用戶將 SQL 查詢提交到遠(yuǎn)程的 SQL Gateway 從而像 embedded 模式一樣來使用 Gateway 的各種功能。這種新模式為用戶在使用 SQL Gateway 時(shí)提供了更多的便利。
此外,SQL Client/SQL Gateway 現(xiàn)在支持通過 SQL 語(yǔ)句來管理作業(yè)生命周期。用戶可以使用 SQL 語(yǔ)句顯示存儲(chǔ)在 JobManager 中的所有作業(yè)信息,可以使用作業(yè)的唯一作業(yè) ID 來停止運(yùn)行中的作業(yè)。借助這個(gè)新功能,SQL Client/SQL Gateway 現(xiàn)在幾乎擁有了與 Flink CLI 相同的功能,成為管理 Flink 作業(yè)的另一個(gè)更強(qiáng)大的工具。
SQL API
在現(xiàn)代大數(shù)據(jù)工作流中,SQL 引擎的行級(jí)刪除和更新能力變得越來越重要。應(yīng)用場(chǎng)景包括為了符合監(jiān)管要求而刪除特定一組數(shù)據(jù)、為了進(jìn)行數(shù)據(jù)訂正而更新一行數(shù)據(jù)等。許多流行的計(jì)算引擎比如 Trino、Hive 等已經(jīng)提供了這類支持。Flink 1.17 為 Batch 模式引入了新的 Delete 和 Update API,并將其暴露給連接器,這樣外部存儲(chǔ)系統(tǒng)便可以基于這個(gè) API 實(shí)現(xiàn)行級(jí)更新和刪除。此外,此次發(fā)布還擴(kuò)展了 ALTER TABLE 語(yǔ)法,包括 ADD/MODIFY/DROP 列、主鍵和 Watermark 的能力。這些功能增強(qiáng)提升了用戶按需維護(hù)元數(shù)據(jù)的靈活性。
Apache Flink 1.17 支持了 SQL Client 的 gateway 模式,允許用戶將 SQL 查詢提交給 SQL Gateway 來使用 Gateway 的各種功能。用戶可以使用 SQL 語(yǔ)句來管理作業(yè)的生命周期,包括顯示作業(yè)信息和停止正在運(yùn)行的作業(yè),這為管理 Flink 作業(yè)提供了一個(gè)強(qiáng)大的工具。
Hive 兼容
Apache Flink 1.17 對(duì) Hive connector 進(jìn)行了一系列改進(jìn),使其更加生產(chǎn)可用。在之前的版本中,對(duì)于 Hive 的寫入,只支持在流模式下自動(dòng)地進(jìn)行文件合并,而不支持批模式。從 Flink 1.17 開始,在批模式下也能自動(dòng)地進(jìn)行文件合并,這個(gè)特性可以大大減少小文件的數(shù)量。同時(shí),對(duì)于通過加載 HiveModule 來使用 Hive 內(nèi)置函數(shù)的場(chǎng)景,此次發(fā)布引入了一些原生的 Hive 聚合函數(shù)如 SUM/COUNT/AVG/MIN/MAX 進(jìn) HiveModule 中,這些函數(shù)可以在基于哈希的聚合算子上執(zhí)行,從而帶來顯著的性能提升。
流處理
Flink 1.17 解決了一些棘手的 Streaming SQL 語(yǔ)義和正確性問題,優(yōu)化了 Checkpoint 性能,完善了 watermark 對(duì)齊機(jī)制,擴(kuò)展了 Streaming FileSink,升級(jí)了 Calcite 和 FRocksDB 到更新的版本。這些提升進(jìn)一步鞏固了 Flink 在流處理領(lǐng)域的領(lǐng)先地位。
Streaming SQL 語(yǔ)義完善
為了解決正確性問題并完善 Streaming SQL 語(yǔ)義,F(xiàn)link 1.17 引入了一個(gè)實(shí)驗(yàn)性功能叫 PLAN_ADVICE ,該功能可以檢測(cè)用戶 SQL 潛在的正確性風(fēng)險(xiǎn),并提供優(yōu)化建議。例如,如果用戶通過 EXPLAIN PLAN_ADVICE 命令發(fā)現(xiàn)查詢存在 NDU(非確定性更新) 問題,優(yōu)化器會(huì)在物理計(jì)劃輸出的末尾追加建議,建議會(huì)標(biāo)記到對(duì)應(yīng)操作節(jié)點(diǎn)上,并提示用戶更新查詢和配置。通過提供這些具體的建議,優(yōu)化器可以幫助用戶提高查詢結(jié)果的準(zhǔn)確性。
== Optimized Physical Plan With Advice ==
...
advice[1]: [WARNING] The column(s): day(generated by non-deterministic function: CURRENT_TIMESTAMP ) can not satisfy the determinism requirement for correctly processing update message('UB'/'UA'/'D' in changelogMode, not 'I' only), this usually happens when input node has no upsertKey(upsertKeys=[{}]) or current node outputs non-deterministic update messages. Please consider removing these non-deterministic columns or making them deterministic by using deterministic functions.
PLAN_ADVICE 功能還可以幫助用戶提高查詢的性能和效率。例如,如果檢測(cè)到聚合操作可以優(yōu)化為更高效的 local-global 聚合操作,優(yōu)化器會(huì)提供相應(yīng)的優(yōu)化建議。通過應(yīng)用這些具體的建議,優(yōu)化器可以幫用戶提高其查詢的性能和效率。
== Optimized Physical Plan With Advice ==
...
advice[1]: [ADVICE] You might want to enable local-global two-phase optimization by configuring ('table.optimizer.agg-phase-strategy' to 'AUTO').
此外 Flink 1.17 還修復(fù)了多個(gè)可能影響數(shù)據(jù)正確性的 plan 優(yōu)化問題,如: FLINK-29849 , FLINK-30006 , 和 FLINK-30841 等。
Watermark 對(duì)齊增強(qiáng)
在早期版本中, FLIP-182 提出了一種稱為 watermark 對(duì)齊的解決方案,以解決 event time 作業(yè)中的源數(shù)據(jù)傾斜問題。但是,該方案存在一個(gè)限制,即 Source 并行度必須和分區(qū)數(shù)匹配。這是因?yàn)榫哂卸鄠€(gè)分區(qū)的 Source 算子中,如果一個(gè)分區(qū)比另一個(gè)分區(qū)更快地發(fā)出數(shù)據(jù),此時(shí)需要緩存大量數(shù)據(jù)。為了解決這個(gè)限制,F(xiàn)link 1.17 引入了 FLIP-217 ,它增強(qiáng)了 watermark 對(duì)齊考慮 watermark 邊界的情況下對(duì) Source 算子內(nèi)的多個(gè)分區(qū)進(jìn)行數(shù)據(jù)發(fā)射對(duì)齊。這個(gè)增強(qiáng)功能確保了 Source 中的 Watermark 前進(jìn)更加協(xié)調(diào),避免了下游算子緩存過多的數(shù)據(jù),從而提高了流作業(yè)的執(zhí)行效率。
Streaming FileSink 擴(kuò)展
在添加 ABFS 支持之后,Streaming FileSink 現(xiàn)在可以支持五種不同的文件系統(tǒng):HDFS、S3、OSS、ABFS 和 Local。這個(gè)擴(kuò)展有效地覆蓋了主流文件系統(tǒng),為用戶提供了更多的選擇和更高的靈活性。
Checkpoint 改進(jìn)
通用增量 Checkpoint(Generic Incremental Checkpont,簡(jiǎn)稱 GIC)旨在提高 Checkpoint 過程的速度和穩(wěn)定性。WordCount 案例中的一些實(shí)驗(yàn)結(jié)果如下所示。 請(qǐng)參考這篇 性能測(cè)評(píng)文章 獲取更多詳細(xì)信息,該文結(jié)合理論分析和實(shí)踐結(jié)果展示了 GIC 的收益和成本。
表格-1: 在 WordCount 中開啟 GIC 后的收益

表格-2: 在 WordCount 中開啟 GIC 后的開銷

Unaligned Checkpoint (UC) 可以大大提高反壓下 Checkpoint 的完成率。 之前版本的 UC 會(huì)寫入過多的小文件,進(jìn)一步可能會(huì)導(dǎo)致 HDFS 的 namenode 負(fù)載過高。社區(qū)在 1.17 版本中解決了該問題,使 UC 在生產(chǎn)環(huán)境中更加可用。
Flink 1.17 版本提供了一個(gè) REST API ,用戶基于該 API 可以在作業(yè)運(yùn)行時(shí)手動(dòng)觸發(fā)具有自定義 Checkpoint 類型的 Checkpoint。 例如,對(duì)于使用增量 Checkpoint 運(yùn)行的作業(yè),用戶可以定期或手動(dòng)觸發(fā)全量 Checkpoint 來去除多個(gè)增量 Checkpoint 之間的關(guān)聯(lián)關(guān)系,從而避免引用很久以前的文件。
RocksDBStateBackend 升級(jí)
Flink 1.17 版本將 FRocksDB 的版本升級(jí)到 6.20.3-ververica-2.0,為 RocksDBStateBackend 帶來了一些改進(jìn):
支持在 Apple 芯片上構(gòu)建 FRocksDB Java
通過避免昂貴的 ToString() 操作提高 Compaction Filter 的性能
升級(jí) FRocksDB 的 ZLIB 版本,避免 Memory Corruption
為 RocksJava 添加 periodic_compaction_seconds 選項(xiàng)
可以參考 FLINK-30836 了解更多詳細(xì)信息。
Flink 1.17 版本還提供了參數(shù)擴(kuò)大 TaskManager 的 slot 之間共享內(nèi)存的范圍,這種方式可以在 TaskManager 中 slot 內(nèi)存使用不均勻時(shí)提高內(nèi)存效率?;诖嗽谡{(diào)整參數(shù)后可以以資源隔離為代價(jià)來降低整體內(nèi)存消耗。請(qǐng)參考 state.backend.rocksdb.memory.fixed-per-tm 了解更多相關(guān)信息。
Calcite 升級(jí)
Flink 1.17 將 Calcite 版本升級(jí)到 1.29.0 以提高 Flink SQL 系統(tǒng)的性能和效率。Flink 1.16 使用的是 Calcite 1.26.0 版本,該版本存在 SEARCH 操作符引發(fā)的 RexNode 簡(jiǎn)化等嚴(yán)重問題,這些問題會(huì)導(dǎo)致查詢優(yōu)化后產(chǎn)生錯(cuò)誤的數(shù)據(jù),如 CALCITE-4325 和 CALCITE-4352 所報(bào)告的案例。通過升級(jí)到該版本的 Calcite,F(xiàn)link 可以在 Flink SQL 中利用其功能改進(jìn)和新特性。這不僅修復(fù)了多個(gè) bug,同時(shí)加快了查詢處理速度。
其他
PyFlink
在 Flink 1.17 中,PyFlink 也完成了若干功能,PyFlink 是 Apache Flink 的 Python 語(yǔ)言接口。PyFlink 中,一些比較重要的改進(jìn)包括支持 Python 3.10、支持在 Mac M1 和 M2 電腦上運(yùn)行 PyFlink 等。此外,在該版本中還完成了一些小的功能優(yōu)化,比如改進(jìn)了 Java 和 Python 進(jìn)程之間的跨進(jìn)程通信的穩(wěn)定性、支持以字符串的方式聲明 Python UDF 的結(jié)果類型、支持在 Python UDF 中訪問作業(yè)參數(shù)等。總體來說,該版本主要專注于改進(jìn) PyFlink 的易用性,而不是引入一些新的功能,期望通過這些易用性改進(jìn),改善用戶的使用體驗(yàn),使得用戶可以更高效地進(jìn)行數(shù)據(jù)處理。
性能監(jiān)控 Benchmark
這個(gè)版本周期中,我們也在 Slack 頻道( #flink-dev-benchmarks )中加入了性能日常監(jiān)控匯報(bào)來幫助開發(fā)者快速發(fā)現(xiàn)性能回退問題,這對(duì)代碼質(zhì)量保證非常有意義。 通過 Slack 頻道或 Speed Center 發(fā)現(xiàn)性能回退后,開發(fā)者可以按照 Benchmark's wiki 中方式處理它。
Task 級(jí)別火焰圖
從 Flink 1.17 版本開始,F(xiàn)lame Graph 功能提供了針對(duì) task 級(jí)別的可視化支持,使得用戶可以更詳細(xì)地了解各個(gè) task 的性能。該功能是相比于之前版本的 Flame Graph 的重大改進(jìn),因?yàn)樗梢宰層脩暨x擇感興趣的 subtask 并查看相應(yīng)的火焰圖。通過這種方式,用戶可以確定任務(wù)可能出現(xiàn)性能問題的具體區(qū)域,然后采取措施加以解決。這可以顯著提高用戶數(shù)據(jù)處理管道的整體效率。

通用的令牌機(jī)制
在 Flink 1.17 之前,F(xiàn)link 只支持 Kerberos 認(rèn)證和基于 Hadoop 的令牌。隨著 FLIP-272 的實(shí)現(xiàn),F(xiàn)link 的委托令牌框架更加通用,使其認(rèn)證協(xié)議不再局限于 Hadoop。這將允許貢獻(xiàn)者在未來可以添加對(duì)非 Hadoop 框架的支持,這些框架的認(rèn)證協(xié)議可以不用基于 Kerberos。此外, FLIP-211 改進(jìn)了 Flink 與 Kerberos 的交互,減少了在 Flink 中交換委托令牌所需的請(qǐng)求數(shù)量。
升級(jí)說明
Apache Flink 社區(qū)努力確保升級(jí)過程盡可能平穩(wěn), 但是升級(jí)到 1.17 版本可能需要用戶對(duì)現(xiàn)有應(yīng)用程序做出一些調(diào)整。請(qǐng)參考 Release Notes 獲取更多的升級(jí)時(shí)需要的改動(dòng)與可能的問題列表細(xì)節(jié)。
貢獻(xiàn)者列表
Apache Flink 社區(qū)感謝對(duì)此版本做出貢獻(xiàn)的每一位貢獻(xiàn)者:
Ahmed Hamdy, Aitozi, Aleksandr Pilipenko, Alexander Fedulov, Alexander Preu?, Anton Kalashnikov, Arvid Heise, Bo Cui, Brayno, Carlos Castro, ChangZhuo Chen (陳昌倬), Chen Qin, Chesnay Schepler, Clemens, ConradJam, Danny Cranmer, Dawid Wysakowicz, Dian Fu, Dong Lin, Dongjoon Hyun, Elphas Toringepi, Eric Xiao, Fabian Paul, Ferenc Csaky, Gabor Somogyi, Gen Luo, Gunnar Morling, Gyula Fora, Hangxiang Yu, Hong Liang Teoh, HuangXingBo, Jacky Lau, Jane Chan, Jark Wu, Jiale, Jin, Jing Ge, Jinzhong Li, Joao Boto, John Roesler, Jun He, JunRuiLee, Junrui Lee, Juntao Hu, Krzysztof Chmielewski, Leonard Xu, Licho, Lijie Wang, Mark Canlas, Martijn Visser, MartijnVisser, Martin Liu, Marton Balassi, Mason Chen, Matt, Matthias Pohl, Maximilian Michels, Mingliang Liu, Mulavar, Nico Kruber, Noah, Paul Lin, Peter Huang, Piotr Nowojski, Qing Lim, QingWei, Qingsheng Ren, Rakesh, Ran Tao, Robert Metzger, Roc Marshal, Roman Khachatryan, Ron, Rui Fan, Ryan Skraba, Salva Alcántara, Samrat, Samrat Deb, Samrat002, Sebastian Mattheis, Sergey Nuyanzin, Seth Saperstein, Shengkai, Shuiqiang Chen, Smirnov Alexander, Sriram Ganesh, Steven van Rossum, Tartarus0zm, Timo Walther, Venkata krishnan Sowrirajan, Wei Zhong, Weihua Hu, Weijie Guo, Xianxun Ye, Xintong Song, Yash Mayya, YasuoStudyJava, Yu Chen, Yubin Li, Yufan Sheng, Yun Gao, Yun Tang, Yuxin Tan, Zakelly, Zhanghao Chen, Zhenqiu Huang, Zhu Zhu, ZmmBigdata, bzhaoopenstack, chengshuo.cs, chenxujun, chenyuzhi, chenyuzhi459, chenzihao, dependabot[bot], fanrui, fengli, frankeshi, fredia, godfreyhe, gongzhongqiang, harker2015, hehuiyuan, hiscat, huangxingbo, hunter-cloud09, ifndef-SleePy, jeremyber-aws, jiangjiguang, jingge, kevin.cyj, kristoffSC, kurt, laughingman7743, libowen, lincoln lee, lincoln.lil, liujiangang, liujingmao, liuyongvs, liuzhuang2017, luoyuxia, mas-chen, moqimoqidea, muggleChen, noelo, ouyangwulin, ramkrish86, saikikun, sammieliu, shihong90, shuiqiangchen, snuyanzin, sunxia, sxnan, tison, todd5167, tonyzhu918, wangfeifan, wenbingshen, xuyang, yiksanchan, yunfengzhou-hub, yunhong, yuxia Luo, yuzelin, zhangjingcun, zhangmang, zhengyunhong.zyh, zhouli, zoucao, 沈嘉琦