13-Operator Chains(任務(wù)鏈)

一、數(shù)據(jù)傳輸形式

Stream在算子之間傳輸數(shù)據(jù)的形式可以是one-to-one(forwarding)的模式也可以是redistributing的模式,具體是哪一種形式,取決于算子的種類。

  • One-to-one:
    stream(比如在source和map operator之間)維護(hù)著分區(qū)以及元素的順序。那意味著flatmap 算子的子任務(wù)看到的元素的個(gè)數(shù)以及順序跟source 算子的子任務(wù)生產(chǎn)的元素的個(gè)數(shù)、順序相同,map、fliter、flatMap等算子都是one-to-one的對應(yīng)關(guān)系。類似于spark中的窄依賴
  • Redistributing:
    stream(map()跟keyBy/window之間或者keyBy/window跟sink之間)的分區(qū)會(huì)發(fā)生改變。每一個(gè)算子的子任務(wù)依據(jù)所選擇的transformation發(fā)送數(shù)據(jù)到不同的目標(biāo)任務(wù)。例如,keyBy()基于hashCode重分區(qū)、broadcast和rebalance會(huì)隨機(jī)重新分區(qū),這些算子都會(huì)引起redistribute過程,而redistribute過程就類似于Spark中的shuffle過程。類似于spark中的寬依賴。

二、任務(wù)鏈合并

  • Flink 采用了一種稱為任務(wù)鏈的優(yōu)化技術(shù),可以在特定條件下減少本地通信的開銷。為了滿足任務(wù)鏈的要求,必須將兩個(gè)或多個(gè)算子設(shè)為相同的并行度,并通過本地轉(zhuǎn)發(fā)(local forward)的方式進(jìn)行連接
  • 相同并行度的 one-to-one 操作,F(xiàn)link 這樣相連的算子鏈接在一起形成一個(gè) task,原來的算子成為里面的 subtask
    并行度相同、并且是 one-to-one 操作,兩個(gè)條件缺一不可

三、代碼使用

        env.disableOperatorChaining();//全局禁用任務(wù)鏈合并
        dataStreamSource.flatMap().disableChaining(); //將某算子禁用任務(wù)鏈合并
        dataStreamSource.flatMap().startNewChain();  //flatmap前是一個(gè)任務(wù)鏈,后面是一個(gè)任務(wù)鏈
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.Flink 運(yùn)行時(shí)的角色 Flink系統(tǒng)架構(gòu)中包含了兩個(gè)角色,分別是JobManager和TaskManage...
    Rex_2013閱讀 1,830評論 0 4
  • 思考問題:1.怎么樣實(shí)現(xiàn)并行計(jì)算?答:設(shè)置并行度。多線程,不同任務(wù)放到不同線程上。 2.并行的任務(wù),需要占用多少s...
    yayooo閱讀 4,558評論 0 0
  • 運(yùn)行時(shí)組件 作業(yè)管理器(JobManager) 控制一個(gè)應(yīng)用程序執(zhí)行的主進(jìn)程,也就是說,每個(gè)應(yīng)用程序都會(huì)被一個(gè)不同...
    架構(gòu)師老狼閱讀 733評論 0 0
  • Flink程序的執(zhí)行具有并行、分布式的特性。在執(zhí)行過程中,一個(gè)流(stream)包含一個(gè)或多個(gè)分區(qū)(stream ...
    yayooo閱讀 1,643評論 0 0
  • 所有的Flink程序都是由三部分組成的:Source、Transformation、Sink。做各種各樣的轉(zhuǎn)換操作...
    勇于自信閱讀 969評論 0 0

友情鏈接更多精彩內(nèi)容