Flink Weekly | 每週社區動態更新-20200513

大家好,本文爲 Flink Weekly 的第十五期,由張成整理,李本超 Review。本期主要內容包括:近期社區開發進展、郵件問題答疑、Flink 最新社區動態及技術文章推薦等。

01 Flink 開發進展

1.Release

■ [releases] 李鈺發起了 Flink 1.10.1 RC #3 的投票,投票已經通過,最新動態請參考如下鏈接。

[1]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-Release-1-10-1-release-candidate-3-tp41216.html

■ [releases] Tzu-Li 發起了 Flink Stateful Functions Release 2.0.0 RC #4 的投票,經過討論後決定將會在新開一個 RC。

[2]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/VOTE-Apache-Flink-Stateful-Functions-Release-2-0-0-release-candidate-4-td39453.html

2.DEV

■ 阿里巴巴已經在 flink-packages.org 上發佈了 SpillableHeapStateBackend 的預覽版。該狀態後端在 FLINK-12692 中貢獻給 Apache Flink。SpillableHeapStateBackend 是一個基於 Java 堆的Statebackend(如 FilesystemStatebackend ),在堆耗盡之前將最冷的狀態溢出到磁盤。

[3]https://flink-packages.org/packages/spillable-state-backend-for-flink
https://issues.apache.org/jira/browse/FLINK-12692

3.FLIP

■ [FLIP-108] Yangze Guo 發起了有關類加載器和依賴項問題的討論。問題是 mainClassLoader 無法識別 ExternalResourceInfo 的子類。ExternalResourceInfo 位於 ExternalResourceDriver jar 中,並通過 PluginManager 與 mainClassLoader 隔離。因此,程序會拋出 ClassNotFoundExeption 異常。Yangze Guo 提出瞭如下 3 個備選方案,大家在討論中認爲第 3 個方案比較好。Yangze Guo 發起了使用第 3 個方案修改 API 的投票,投票最終獲得通過。

備選方案1:

不使用插件機制,只需將驅動程序加載到 mainClassLoader。缺點是用戶需要處理依賴衝突。

備選方案2:

強制要求用戶構建兩個單獨的 jar,分別用於 ExternalResourceDriver 和 ExternalResourceInfo。然後把包含 ExternalResourceInfo 類的 jar 添加到“ / lib”目錄。這種方法可能有效,但可能會使用戶厭煩。

備選方案3:

修改 RuntimeContext#getExternalResourceInfos 方法,讓其返回 ExternalResourceInfo,同時在 ExternalResourceInfo 接口增加一個類似 “Properties getInfo()” 的方法。該方法的返回值可以由驅動程序提供者和用戶指定。

[4]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-108-Problems-regarding-the-class-loader-and-dependency-td40893.html
[5]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/quot-VOTE-FLIP-108-edit-the-Public-API-quot-td40995.html
[6]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/RESULT-VOTE-FLIP-108-edit-the-Public-API-td41061.html

4.Discuss

■ [docker] Ismaël Mejía 發起的是否可以在 Flink 正式 release 之外發布 docker 鏡像的討論有了新的更新。

[7]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Intermediary-releases-of-the-flink-docker-images-td40602.html

■ [udf/udaf] Leerho 發起了關於 Flink 集成 DataSketches 的討論。Arvid Heise 建議先放在 flink-package 中。

[8]https://flink-packages.org/
[9]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/Integration-of-DataSketches-into-Flink-td40750.html

■ [connector] 李勁鬆發起了在 TableFactory 中引入 StatefulSequenceSource 的討論。StatefulSequenceSource 能夠方便用戶更簡單的進行 Flink SQL 測試。

[10]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Introduce-TableFactory-for-StatefulSequenceSource-td39116.html

■ [connector] Leonard Xu 發起了重構 Flink JDBC Connector 的討論。Leonard Xu 介紹,在重構之後,我們可以很容易地爲表和數據流引入統一的可插拔 JDBC 方言,並且我們可以有更好的模塊組織和實現。目前大家已經達成一致,Leonard Xu 已經創建了相關的 Jira。同時 Flink Hbase Connector 也有同樣的問題,後續在做的時候會單獨進行討論。

[11]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Refactor-flink-jdbc-connector-structure-td40984.html
[12]https://issues.apache.org/jira/browse/FLINK-17537
[13]https://issues.apache.org/jira/browse/FLINK-17538

■ [configuration] Timo 發起了討論如何在屬性( Flink 配置以及 Connector 屬性)中表示配置層次結構,以便生成的文件將是有效的 JSON / YAML。

[14]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Hierarchies-in-ConfigOption-tp40920.html

■ [hadoop] Robert Metzge 發起了討論增加對 Hadoop 3 的支持,並討論了是否將通過 flink-shaded-hadoop 的方式支持 Hadoop 3 的問題。

[15]http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-Adding-support-for-Hadoop-3-and-removing-flink-shaded-hadoop-td40570.html

郵件問題答疑

■ Kcz 在社區提問 Flink 內存設置問題(Metaspace OOM)。李勁鬆回答 Metaspace OOM 通常是 JVM 加載的類過多導致的。比如增加 slot 數量也會導致加載的類變多。同時,社區已經有些用戶反饋 Flink 1.10.0 的默認 metaspace 大小可能不太合理。1.10.1 中會調大這個默認值。用戶可以先通過 taskmanager.memory.metaspace.size 調到 256m 試一試。

[16]http://apache-flink.147419.n8.nabble.com/flink-metaspace-td2835.html

■ Lucas Wu 想單獨設置某些 Flink SQL Job 的並行度,李本超回覆目前無法做到這一點。目前 SQL 還不支持對單獨的 operator 設置並行度,可以通過 table.exec.resource.default-parallelism 設置全局的並行度。

[17]http://apache-flink.147419.n8.nabble.com/flink-sql-job-td2847.html
[18]http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/Flink-SQL-How-can-i-set-parallelism-in-clause-of-group-by-td33736.html
[19]http://apache-flink.147419.n8.nabble.com/MySQL-td3014.html

■ 王磊在社區提問關於 Flink SQL Retraction 的問題。Michael Ran、李勁鬆進行了詳細的回答。有興趣的同學可以參考如下鏈接。

[20]http://apache-flink.147419.n8.nabble.com/FlinkSQL-Retraction-td2893.html

■ Luan Cooper 在社區提問 Sink 表 Append Mode/Upsert Mode 的問題。比如使用 Upsert Mode 寫 ElasticSearch 會遇到無法指定 primary key 問題。這個問題社區同學進行了詳細的解答。其中 Jark Wu 回覆 FLIP-95 和 FLIP-105 後,問題中的 query 就可以原生支持了。FLIP-95 和 FLIP-105 的核心工作就是識別 binlog 中的 update/delete/insert 消息,而不是全當成 append 消息。預計 1.11 能見到這些功能。

[21]http://apache-flink.147419.n8.nabble.com/Streaming-SQL-Source-Sink-Append-Mode-Upsert-Mode-td2956.html

■ Hb 遇到了時區相關的問題,李勁鬆和 Jark Wu 進行了回答。這是一個 bug。Blink 中默認使用了沒有時區的 timestamp,而 proctime 目前還是帶時區的產生了時間。這個問題已經有對應的Jira。社區會以很高的優先級進行修復。

[22]http://apache-flink.147419.n8.nabble.com/flink-sql-td2910.html

■ 1193216154 對 Flink watermark 對齊邏輯有些疑問。李本超進行了解答。watermark 就是取各個 input channel 的最小值作爲當前 subtask 的 watermark 的。同時唐雲進行了補充。正是因爲取各個 input channel 的最小值,所以如果某一個上游一直沒有獲取到真實數據,發送下來的watermark 一直都是 Long.MIN_VALUE,這樣會導致無法觸發 window,社區採用 idle source 的方式 walk around 該問題。同時 FLIP-27 也會涉及到 Source 端的 watermark 對齊的相關問題。

[23]http://apache-flink.147419.n8.nabble.com/flink-watermark-td3018.html
[24]https://ci.apache.org/projects/flink/flink-docs-stable/dev/event_time.html#idling-sources
[25]https://cwiki.apache.org/confluence/display/FLINK/FLIP-27%3A+Refactor+Source+Interface

■ Lec Ssmi 在社區提問關於 async IO in UDFs 的問題,李本超進行了回覆,目前暫不支持。

[26]http://apache-flink-user-mailing-list-archive.2336050.n4.nabble.com/async-IO-in-UDFs-td34978.html

活動 / 博客文章 / 其他

■ Flink 社區 2020 年首場 Meetup 在線直播免費報名中,來自袋鼠雲、網易雲音樂、有贊、阿里巴巴的技術四位技術專家將現場分享豐富技術乾貨。

[27]https://developer.aliyun.com/live/2772

■ Fabian 在 Ververica 博客上發佈了 Flink Foward Virtual 2020 的摘要。

[28]https://www.ververica.com/blog/flink-forward-virtual-2020-recap

■ Flink Forward Virtual 2020 的所有記錄已發佈在 Youtube 上。

[29]https://www.youtube.com/watch?v=NF0hXZfUyqE&list=PLDX4T_cnKjD0ngnBSU-bYGfgVv17MiwA7

■ Marta 在 Flink 博客上的社區更新博客中回顧了過去的幾個月。

[30]https://flink.apache.org/news/2020/05/07/community-update.html
[31]https://flink.apache.org/news/2020/05/04/season-of-docs.html
[32]https://www.meetup.com/Flink-China/events/270310980/
[33]https://www.meetup.com/futureofdata-princeton/events/269933905/

2 分鐘快速訂閱 Flink 中文郵件列表

Apache Flink 中文郵件列表訂閱流程:

  1. 發送任意郵件到 [email protected]
  2. 收到官方確認郵件
  3. 回覆該郵件 confirm 即可訂閱

訂閱成功後將收到 Flink 官方的中文郵件列表的消息,您可以向 [email protected] 發郵件提問也可以幫助別人解答問題,動動手測試一下!

Flink Weekly 週報計劃每週更新一期,內容涵蓋郵件列表中用戶問題的解答、社區開發和提議的進展、社區新聞以及其他活動、博客文章等,歡迎持續關注。
作者介紹:

張成,小紅書技術部基礎平臺開發工程師,目前主要在做基於 Flink 的實時計算平臺開發。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章