中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Apache Flink 1.9 重磅發(fā)布:正式合并阿里內(nèi)部版本Blink重要功能

2019-08-27    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

8月22日,Apache Flink1.9.0版本正式發(fā)布,這也是阿里內(nèi)部版本Blink合并入Flink后的首次版本發(fā)布。此次版本更新帶來的重大功能包括批處理作業(yè)的批式恢復(fù),以及TableAPI和SQL的基于Blink的新查詢引擎(預(yù)覽版)。同時,這一版本還推出了StateProcessorAPI,這是社區(qū)最迫切需求的功能之一,該API使用戶能夠用FlinkDataSet作業(yè)靈活地讀寫保存點。此外,F(xiàn)link1.9還包括一個重新設(shè)計的WebUI和新的PythonTableAPI(預(yù)覽版)以及與ApacheHive生態(tài)系統(tǒng)的集成(預(yù)覽版)。

?ApacheFlink的目標(biāo)是開發(fā)一個流式處理系統(tǒng),以統(tǒng)一和支持多種形式的實時和離線數(shù)據(jù)處理應(yīng)用程序以及事件驅(qū)動的應(yīng)用程序。在1.9版本中,社區(qū)在這方面取得了巨大的進步,將Flink的流處理和批處理能力集成在了統(tǒng)一的運行之上。

本文將詳細(xì)介紹1.9版本所有主要的新功能、改進、重要變化、以及未來的發(fā)展計劃。有關(guān)更多詳細(xì)信息,請查看完整版變更日志。

Flink1.9版本的二進制分發(fā)和源文件可以通過Flink項目的下載頁面以及文檔頁面獲得。Flink1.9與之前1.x版本的@PublicAPI是兼容的。

你也可以通過Flink郵件列表或JIRA與社區(qū)分享你的想法。

新功能和改進

細(xì)粒度批作業(yè)恢復(fù)(FLIP-1)

批作業(yè)(DataSet、TableAPI和SQL)從task失敗中恢復(fù)的時間被顯著縮短了。在Flink1.9之前,批處理作業(yè)中的task失敗是通過取消所有task并重新啟動整個作業(yè)來恢復(fù)的,即作業(yè)從頭開始,所有進度都會廢棄。在1.9版本中,F(xiàn)link將中間結(jié)果保留在網(wǎng)絡(luò)shuffle的邊緣,并使用這些數(shù)據(jù)恢復(fù)僅受故障影響的tasks,即處在同一個failoverregion(故障區(qū))的tasks。故障區(qū)是指通過pipelined數(shù)據(jù)交換方式連接的tasks集合。因此,作業(yè)中batch-shuffle的連接定義了故障區(qū)的邊界。有關(guān)更多詳細(xì)信息,請參見FLIP-1。


要使用這個新的故障策略,需要確保flink-conf.yaml中有jobmanager.execution.failover-strategy:region的配置。

注意:Flink1.9發(fā)布包中默認(rèn)就已經(jīng)包含了該配置項,不過當(dāng)從之前版本升級上來時,如果要復(fù)用之前的配置的話,需要手動加上該配置。

除此之外,還需要在ExecutionConfig中,將ExecutionMode設(shè)置成BATCH,這樣批作業(yè)才能有多個故障區(qū)。

“Region”的故障策略也能同時提升“embarrassinglyparallel”類型的流作業(yè)恢復(fù)速度,也就是沒有任何像keyBy、rebalance等shuffle的作業(yè)。當(dāng)這種作業(yè)在恢復(fù)時,只有受影響的故障區(qū)task需要重啟。對于其他類型的流作業(yè),故障恢復(fù)行為與之前的版本一樣。

StateProcessorAPI(FLIP-43)

直到Flink1.9,從外部訪問作業(yè)的狀態(tài)僅局限于:QueryableState(可查詢狀態(tài))實驗性功能。此版本中引入了一種新的強大類庫,基于DataSet支持讀取、寫入和修改狀態(tài)快照。在實踐上,這意味著:

Flink作業(yè)的狀態(tài)可以自主構(gòu)建,通過讀取外部系統(tǒng)的數(shù)據(jù)(例如外部數(shù)據(jù)庫),轉(zhuǎn)換成savepoint。

Savepoint中的狀態(tài)可以使用任意的Flink批處理API查詢(DataSet、Table、SQL)。例如,分析相關(guān)的狀態(tài)模式或檢查狀態(tài)差異以支持應(yīng)用程序?qū)徍嘶蚬收吓挪椤?/p>

Savepoint中的狀態(tài)schema可以離線遷移了,而之前的方案只能在訪問狀態(tài)時進行,是一種在線遷移。

Savepoint中的無效數(shù)據(jù)可以被識別出來并糾正。

新的StateProcessorAPI覆蓋了所有類型的快照:savepoint,fullcheckpoint和incrementalcheckpoint。有關(guān)更多詳細(xì)信息,請參見FLIP-43。

Stop-with-Savepoint(FLIP-34)

“Cancel-with-savepoint”是停止、重啟、fork或升級Flink作業(yè)的一個常用操作。然而,當(dāng)前的實現(xiàn)并沒有保證輸出到exactly-oncesink的外部存儲的數(shù)據(jù)持久化。為了改進停止作業(yè)時的端到端語義,F(xiàn)link1.9引入了一種新的SUSPEND模式,可以帶savepoint停止作業(yè),保證了輸出數(shù)據(jù)的一致性?梢允褂肍linkCLI來suspend一個作業(yè):

bin/flink stop -p [:targetSavepointDirectory] :jobId

最終作業(yè)的狀態(tài)會在成功時設(shè)置成FINISHED狀態(tài),方便用戶區(qū)別操作是否失敗。

更多詳細(xì)信息,請參見FLIP-34。

重構(gòu)FlinkWebUI

社區(qū)討論了現(xiàn)代化FlinkWebUI的提案,并決定采用Angular的最新穩(wěn)定版來重構(gòu)這個組件。從Angular1.x躍升到了7.x。重新設(shè)計的UI是1.9.0的默認(rèn)版本,不過仍保留了切換到舊版WebUI的按鈕。

 

 

 

注:未來,我們不保證舊版WebUI的功能是對齊的,且待新版本穩(wěn)定后將會完全移除舊版WebUI。

新BlinkSQL查詢處理器預(yù)覽

在Blink捐贈給ApacheFlink之后,社區(qū)就致力于為TableAPI和SQL集成Blink的查詢優(yōu)化器和runtime。第一步,我們將flink-table單模塊重構(gòu)成了多個小模塊(FLIP-32)。這對于Java和ScalaAPI模塊、優(yōu)化器以及runtime模塊來說,有了一個更清晰的分層和定義明確的接口。


不僅如此,我們還擴展了Blink的planner以實現(xiàn)新的優(yōu)化器接口,所以現(xiàn)在有兩個插件化的查詢處理器來執(zhí)行TableAPI和SQL:1.9以前的Flink處理器和新的基于Blink的處理器;贐link的查詢處理器提供了更好的SQL覆蓋率(1.9完整支持TPC-H,TPC-DS的支持計劃在下一個版本實現(xiàn))并通過更廣泛的查詢優(yōu)化(基于成本的執(zhí)行計劃選擇和更多的優(yōu)化規(guī)則)、改進的代碼生成機制、和調(diào)優(yōu)過的算子實現(xiàn)來提升批處理查詢的性能。除此之外,基于Blink的查詢處理器還提供了更強大的流處理能力,包括一些社區(qū)期待已久的新功能(如維表Join,TopN,去重)和聚合場景緩解數(shù)據(jù)傾斜的優(yōu)化,以及內(nèi)置更多常用的函數(shù)。

注:兩個查詢處理器之間的語義和功能大部分是一致的,但未完全對齊。具體請查看發(fā)布說明。

不過,Blink的查詢處理器尚未完全集成。因此,1.9之前的Flink處理器仍然是1.9版本的默認(rèn)處理器,建議用于生產(chǎn)設(shè)置。可以在創(chuàng)建TableEnvironment時通過EnvironmentSettings配置啟用Blink處理器。被選擇的處理器必須要在正在執(zhí)行的Java進程的類路徑中。對于集群設(shè)置,默認(rèn)兩個查詢處理器都會自動地加載到類路徑中。當(dāng)從IDE中運行一個查詢時,需要在項目中顯式地增加一個處理器的依賴。

TableAPI/SQL的其他改進

除了圍繞BlinkPlanner令人興奮的進展外,社區(qū)還做了一系列的改進,包括:

♦為TableAPI/SQL的Java用戶去除Scala依賴(FLIP-32)

作為重構(gòu)和拆分flink-table模塊工作的一部分,F(xiàn)link1.9版本為Java和Scala創(chuàng)建了兩個單獨的API模塊。對于Scala用戶而言變化并不大,不過現(xiàn)在Java用戶在使用TableAPI和SQL時,可以不用再引入一堆Scala依賴了。

♦重構(gòu)TableAPI/SQL的類型系統(tǒng)(FLIP-37)

Flink1.9實現(xiàn)了一個新的數(shù)據(jù)類型系統(tǒng),以便從TableAPI中移除對FlinkTypeInformation的依賴,并提高其對SQL標(biāo)準(zhǔn)的遵從性,不過還在進行中,預(yù)計將在下一版本完工,并且在Flink1.9中,UDF尚未移植到新的類型系統(tǒng)上。

♦TableAPI的多列和多行轉(zhuǎn)換(FLIP-29)

TableAPI擴展了一組支持多行和多列、輸入和輸出的轉(zhuǎn)換功能。這些轉(zhuǎn)換能夠極大簡化處理邏輯的實現(xiàn),同樣的邏輯如果使用關(guān)系運算符來實現(xiàn)就會相對麻煩。

♦重構(gòu)和統(tǒng)一CatalogAPI

我們開發(fā)了嶄新的Catalog接口以統(tǒng)一處理內(nèi)外部的catalog及元數(shù)據(jù)。這項工作雖然主要是為了Hive集成(見下文)而啟動的,但同時也全面提升了Flink在管理catalog元數(shù)據(jù)的整體便利性。在此之前,通過TableAPI或SQL定義的表都無法持久化保存;從Flink1.9起,這些表的元數(shù)據(jù)可以被持久化到catalog中。這意味著用戶可以在HiveMetastoreCatalog中創(chuàng)建Kafka表,并在query中直接引用該表。

♦SQLAPI中的DDL支持(FLINK-10232)

到目前為止,F(xiàn)linkSQL已經(jīng)支持DML語句(如SELECT,INSERT)。但是外部表(tablesource和tablesink)必須通過Java/Scala代碼或配置文件的方式注冊。1.9版本中,支持SQLDDL語句的方式注冊和刪除表(CREATETABLE,DROPTABLE)。不過目前還沒有增加流特定的語法擴展來定義時間戳抽取和watermark生成策略等。流式的需求也將會在下一版本中完整支持。

Hive集成預(yù)覽(FLINK-10556)

ApacheHive是Hadoop生態(tài)圈中廣泛用于存儲和查詢海量結(jié)構(gòu)化數(shù)據(jù)的系統(tǒng)。Hive除了是一個查詢處理器外,還提供了一個叫做Metastore的catalog來管理和組織大數(shù)據(jù)集。查詢處理器的一個常見集成點是與Hive的Metastore集成,以便能夠利用Hive管理的數(shù)據(jù)。

最近,社區(qū)開始為FlinkTableAPI和SQL實現(xiàn)一個連接到HiveMetastore的外部catalog。在Flink1.9中,用戶能夠查詢和處理存儲在Hive中多種格式的數(shù)據(jù)。Hive集成還包括支持在FlinkTableAPI/SQL中使用Hive的UDF。有關(guān)詳細(xì)信息,請參見FLINK-10556。

在以前,TableAPI/SQL中定義的表一直是臨時的。新的catalog連接器允許在Metastore中持久化存儲那些使用SQLDDL語句創(chuàng)建的表(參見上文)。這意味著可以直接連接到Metastore并注冊一個表,例如,Kafkatopic的表。從現(xiàn)在開始,只要catalog連接到Metastore,就可以查詢該表。

請注意Flink1.9中提供的Hive支持目前還是實驗性的,下一個版本中將穩(wěn)定這些功能,期待大家的反饋。

新PythonTableAPI預(yù)覽(FLIP-38)

Flink1.9還引入了PythonTableAPI的首個版本(FLIP-38),F(xiàn)link的目標(biāo)是持續(xù)完善對Python的支持,而這僅僅標(biāo)志著開始。該功能圍繞著TableAPI設(shè)計了很薄的一層PythonAPI包裝器,基本上將PythonTableAPI方法的調(diào)用都轉(zhuǎn)換為JavaTableAPI調(diào)用。在Flink1.9版本中,PythonTableAPI尚不支持UDF,只是標(biāo)準(zhǔn)的關(guān)系操作。在Python中支持UDF的功能已規(guī)劃在未來版本的路線圖中。

如果想嘗試新的PythonAPI,則需要手動安裝PyFlink。然后,可以看一看文檔中的演練并嘗試自己探索。社區(qū)目前正在準(zhǔn)備一個pyflink的Python包,該包將可以通過pip進行安裝。

重要變化

TableAPI和SQL現(xiàn)在是Flink發(fā)行版的默認(rèn)配置的一部分。以前,必須通過將相應(yīng)的JAR文件從./opt移動到./lib來啟用TableAPI和SQL。

為了準(zhǔn)備FLIP-39,機器學(xué)習(xí)類庫(flink-ml)已經(jīng)被移除了。

舊的DataSet和DataStreamPythonAPI已被刪除,建議使用FLIP-38中引入的新PythonAPI。

Flink可以用Java9編譯和運行。請注意,與外部系統(tǒng)(connectors,文件系統(tǒng),reporters)交互的某些組件可能無法工作,目前相應(yīng)的項目可能不支持Java9。

發(fā)布說明

如果你計劃升級Flink到最新的1.9.0版本,請查閱發(fā)布說明了解更詳細(xì)的改動列表以及新特性。

作者:Flink官方網(wǎng)站
翻譯:伍翀(云邪)

標(biāo)簽: Flink  創(chuàng)笫

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Apache Beam 實戰(zhàn)指南 | 大數(shù)據(jù)管道 (pipeline) 設(shè)計及實戰(zhàn)

下一篇:2018年中國大數(shù)據(jù)行業(yè)細(xì)分市場分析與發(fā)展趨勢