Apache Flink 1.9.0 發布,開源流處理框架

2021-01-18 開源中國

Apache Flink 1.9.0 已經發布,Apache Flink 項目的目標是開發一個流處理系統,以統一和支持多種形式的實時和離線數據處理應用程式以及事件驅動的應用程式。

此版本包括批處理作業的批處理式恢復,以及新的基於閃爍的表 API 和 SQL 查詢引擎的預覽,還有狀態處理器 API 的可用性,它是最常見的請求特性之一,允許用戶使用 Flink DataSet 作業讀寫保存點。最後,包括一個重新設計的 WebUI 和 Flink 新的 Python Table API 的預覽以及它與 Apache Hive 生態系統的集成。

TableAPI & SQL

將 Table 模塊進行拆分(FLIP-32,FLIP 即 Flink Improvement Proposals,專門記錄一些對Flink 做較大修改的提議),對 Java 和 Scala 的 API 進行依賴梳理,並且提出了 Planner 接口以支持多種不同的 Planner 實現。Planner 將負責具體的優化和將 Table 作業翻譯成執行圖的工作,我們可以將原來的實現全部挪至 Flink Planner 中,然後把對接新架構的代碼放在 Blink Planner 裡。

不僅讓 Table 模塊在經過拆分後更加清晰,更重要的是不影響老版本用戶的體驗。在 1.9 版本中,已經 merge 了大部分當初從 Blink 開源出來的 SQL 功能。

除了架構升級之外,Table 模塊在 1.9 版本還做了幾個相對比較大的重構和新功能,包括:

FLIP-37:重構 Table API 類型系統

FLIP-29:Table 增加面向多行多列操作的 API

FLINK-10232:初步的 SQL DDL 支持

FLIP-30:全新的統一的 Catalog API

FLIP-38:Table API 增加 Python 版本

批處理改進 

Flink的批處理功能在 1.9 版本有了重大進步,首當其衝的是優化批處理的錯誤恢復代價:FLIP-1(Fine Grained Recovery from Task Failures),從這個 FLIP 的編號就可以看出,該優化其實很早就已經提出,1.9 版本終於有機會將 FLIP-1 中未完成的功能進行了收尾。

在新版本中,如果批處理作業有錯誤發生,那麼 Flink 首先會去計算這個錯誤的影響範圍,即 Failover Region。因為在批處理作業中,有些節點之間可以通過網絡進行Pipeline 的數據傳輸,但其他一些節點可以通過 Blocking 的方式先把輸出數據存下來,然後下遊再去讀取存儲的數據的方式進行數據傳輸。

如果算子輸出的數據已經完整的進行了保存,那麼就沒有必要把這個算子拉起重跑,這樣一來就可以把錯誤恢復控制在一個相對較小的範圍裡。

如果作業極端一點,在每一個需要Shuffle 的地方都進行數據落盤,那麼就和 MapReduce 以及 Spark 的行為類似了。只是 Flink 支持更高級的用法,你可以自行控制每種 Shuffle 是使用網絡來直連,還是通過文件落盤來進行。

流處理改進

這個版本增加了一個非常實用的功能,即 FLIP-43(State Processor API)。Flink 的 State 數據的訪問,以及由 State 數據組成的 Savepoint 的訪問一直是社區用戶呼聲比較高的一個功能。

這次的 State Processor API 則提供了更加靈活的訪問手段,也能夠讓用戶完成一些比較黑科技的功能:

用戶可以使用這個 API 事先從其他外部系統讀取數據,把它們轉存為 Flink Savepoint 的格式,然後讓 Flink 作業從這個 Savepoint 啟動。這樣一來,就能避免很多冷啟動的問題。

使用 Flink 的批處理 API 直接分析State 的數據。State 數據一直以來對用戶是個黑盒,這裡面存儲的數據是對是錯,是否有異常,用戶都無從而知。有了這個 API 之後,用戶就可以像分析其他數據一樣,來對 State 數據進行分析。

髒數據訂正。假如有一條髒數據汙染了你的 State,用戶還可以使用這個 API 對這樣的問題進行修復和訂正。

狀態遷移。當用戶修改了作業邏輯,想復用大部分原來作業的 State,但又希望做一些微調。那麼就可以使用這個 API 來完成相應的工作。

Hive 集成 

在 1.9 版本中,通過 FLIP-30 提出的統一的 Catalog API 的幫助,目前 Flink 已經完整打通了對 Hive Meta Store 的訪問。同時,也增加了 Hive 的 Connector,目前已支持 CSV, Sequence File, Orc, Parquet 等格式。用戶只需要配置 HMS 的訪問方式,就可以使用 Flink 直接讀取 Hive 的表進行操作。在此基礎之上,Flink 還增加了對 Hive 自定義函數的兼容,像 UDF, UDTF和 UDAF,都可以直接運行在Flink SQL裡。

Flink WebUI 修改

組件使用了最新的穩定版本的  Angular。

發布說明

相關焦點

  • 使用Flink進行實時日誌聚合:第一部分
    更具體地說,我們將:a) 討論流式應用程式的日誌記錄要求b) 檢查通用日誌聚合系統的組件c) 從頭開始構建可擴展的日誌聚合框架d) 將我們的定製解決方案與現成的工具進行比較記錄流應用程式在進入分布式流應用程式的日誌記錄需求之前,讓我們退後一步,看看更傳統的批處理。
  • 阿里正式開源通用算法平臺Alink,「雙11」將天貓推薦點擊率提升4%
    整理 | 若名近日,阿里雲計算部門已在 GitHub 上發布了其 Alink 平臺的「核心代碼」,並上傳了一系列算法庫,它們支持批處理和流處理,這對支持機器學習任務至關重要。 Alink 是基於 Flink 的通用算法平臺,由阿里巴巴計算平臺 PAI 團隊研發。
  • Apache RocketMQ 4.4.0 發布
    萬眾期待的 4.4.0 版本終於在昨天成功發布,值得關注的新特性包括權限控制(ACL)和消息軌跡(Msg Trace)。下面大家解讀該版本引入的這兩大特性。
  • 開發者必備:基於 Linux 生態的十大AI開源框架盤
    Deeplearning4j遵循Apache 2.0開源協議,提供了基於AWS雲服務的GPU運算支持,以及微軟伺服器框架的支持。官網: http://deeplearning4j.org/2.」,主要開發者來自伯克利大學的視覺與學習中心(Berkeley Vision and Learning Center,BVLC),基於BSD 2-Clause開源許可協議發布。
  • 開發者必備:基於Linux生態的十大AI開源框架盤點
    Deeplearning4j遵循Apache 2.0開源協議,提供了基於AWS雲服務的GPU運算支持,以及微軟伺服器框架的支持。官網:http://deeplearning4j.org/2.」,主要開發者來自伯克利大學的視覺與學習中心(Berkeley Vision and Learning Center,BVLC),基於BSD 2-Clause開源許可協議發布。
  • Apache Maven 3.0.1 發布 - OSCHINA - 中文開源技術交流社區
    Maven是一套項目管理框架,但這並不是Maven的全部.它是Maven作者能想得到的最顯而易見的三句話定義.但是這個名字是個毫無意義的抽象,它 並沒有表達出Maven的強大功能和複雜性.太多的技術人員經常使用三四個關鍵詞
  • Apache五大主流流計算框架詳細對比
    Apache Streaming Landscape目前已經有了各種各樣的流處理框架,自然也無法在本文中全部攘括。所以我必須將討論限定在某些範圍內,本文中是選擇了所有Apache旗下的流處理的框架進行討論,並且這些框架都已經提供了Scala的語法接口。
  • Apache Flex BlazeDS 4.7.0 發布 - OSCHINA - 中文開源技術交流社區
    Apache Flex BlazeDS 4.7.0 發布,Apache Flex BlazeDS 是基於伺服器的 Java 遠程和 Web 消息技術,允許開發者簡單連接到後端分布式數據和實時推送數據到
  • Apache Airflow 2.0 發布,Airbnb 開源的調度系統
    Apache Airflow 2.0.0 已正式發布,Airflow 是一個靈活、可擴展的工作流自動化和調度系統,可編集和管理數百 PB 的數據流。
  • Flink 源碼|自定義 Format 消費 Maxwell CDC 數據
    常用的 binlog 同步中間件有很多,比如 Alibaba 開源的 canal[1],Red Hat 開源的debezium[2],Zendesk 開源的 Maxwell[3] 等等。這些中間件會負責 binlog 的解析,並同步到消息中間件中,我們只需要消費對應的 Topic 即可。回到 Flink 上,CDC 似乎和我們沒有太大的關聯?
  • Flink Forward Asia 2020 總結
    尤其值得一提的是 Flink 中文社區的繁榮發展:Flink 是當前 Apache 頂級項目中唯一一個開通了中文郵件列表(user-zh@flink.apache.org)的項目,且中文郵件列表的活躍度已超過英文郵件列表;Flink 的官方公眾號訂閱數超過 3 萬人,全年推送超過 200 篇和 Flink 技術,生態以及實踐相關的最新資訊。
  • Apache SkyWalking(Incubating) 5.0.0-alpha 發布
    Apache SkyWalking (Incubating) 5.0.0-alpha 發 布。
  • Apache Kudu 1.8.0 發布,Hadoop 生態數據存儲系統
    Hadoop 數據存儲系統 Apache Kudu 1.8.0 已發布,該版本包含以下新特性:引入了手動數據重新平衡工具,可用於在平板電腦伺服器之間重新分配表副本改進診斷工具,使診斷和故障排除更加簡單添加了對 Spark Streaming DataFrames 的支持到 Kudu Spark 連接器為 Python 客戶端添加了Pandas支持詳情請看發布說明
  • 【行業資訊】gRPC 1.32.0 發布,高性能 RPC 框架6 發布,新增埠和...
    gRPC 1.32.0 穩定版已發布,gRPC 是一款開源的高性能、通用 RPC 框架,面向移動和 HTTP/2 設計,也是谷歌發布的首款基於 Protocol Buffers 的 RPC 框架。
  • 國產開源web伺服器kangle 穩定版2.6.1
    kangle web伺服器是一款國產開源的高性能web伺服器和反向代理伺服器軟體;帶有簡單操作的web控制臺。
  • MiniFramework 2.6.0 發布,PHP 開源框架
    MiniFramework 是一款遵循 Apache2 開源協議發布的,支持 MVC 和 RESTful 的超輕量級 PHP 開發框架,在滿足開發者最基礎的 MVC 分層開發、資料庫和緩存訪問等少量功能基礎上
  • Elastic Stack 6.0 beta 發布,開源系列合集
    Elastic Stack 6.0  beta 發布了,ElasticStack 是一系列開源產品的合集,包括 Elasticsearch、Kibana、Logstash 以及 Beats 等等
  • Apache Pulsar 2.6.1 版本正式發布:功能增強,新增 OAuth2 支持
    在 Apache Pulsar 2.6.0 版本發布後的 2 個月,2020 年 8 月 21 日,Apache Pulsar 2.6.1 版本正式發布!
  • VPF:適用於 Python 的開源視頻處理框架,加速視頻任務、提高 GPU...
    雷鋒網 AI 開發者按:近日,NVIDIA 開源了適用於 Python 的視頻處理框架「VideoProcessingFramework(VPF)」。該框架為開發人員提供了一個簡單但功能強大的 Python 工具,可用於硬體加速的視頻編碼、解碼和處理類等任務。
  • Apache DolphinScheduler 1.3.2 發布,性能提升 2~3 倍
    master 服務啟動時向 Zookeeper 註冊臨時節點,通過監聽 Zookeeper 臨時節點變化來進行容錯處理。因此,在1.3.1版本中DolphinScheduler 集成了成熟的數據交換引擎 DataX 和 Sqoop 以支持多源異構數據源間的傳輸交換。目前,DolphinScheduler 已打通整個數據攝取-數據處理-數據結果同步的 ETL 流程。使用數據同步節點,可以避免在shell腳本中直接配置數據源的連接信息,所有的數據源權限均受 DolphinScheduler 管控。