理解Flink中的Task和SUBTASK


1、概念

Task(任務):Task是一個階段多個功能相同的subTask 的集合,類似於Spark中的TaskSet。

subTask(子任務):subTask是Flink中任務最小執行單元,是一個Java類的實例,這個Java類中有屬性和方法,完成具體的計算邏輯。

 

Operator Chains(算子鏈):沒有shuffle的多個算子合並在一個subTask中,類似於Spark 中的Pipeline。

Slot(插槽):Flink 中計算資源進行隔離的單元,一個Slot中可以運行多個subTask,但是這些subTask必須是來自同一個application的不同階段的subTask。

State(狀態):Flink在運行過程中計算的中間結果。

2、DATAFLOWS數據流介紹

Flink程序的基本構建是 流(stream)和轉換(Transform)

從概念上講,流是對當前數據流向的記錄(流也可能是永無止境的),而 轉換是將一個或多個流作為輸入,根據需要求轉換成我們要的格式的流的過程。

2.2.1、如何划分TASK的依據

1、並行度發生變化時

2、keyBy()/window()/apply() 等發生Rebalance重新分配

3、調用startNewChain()方法,開啟一個新的算子鏈

4、調用diableChaining()方法,即:告訴當前算子操作不使用算子鏈操作。

 

3、OPERATOR CHAINS介紹

Flink將多個subTask 合並成一個Task(任務),這個過程叫做 Operator Chains,每個任務由一個線程執行。使用Operator Chains(算子鏈)可以將多個分開的subTask拼接成

一個任務。

Operator Chains 是一個有用的優化,它減少了線程到線程的切換和緩沖的開銷,並在降低延遲的同時提高了總體吞吐量。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM