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 是一個有用的優化,它減少了線程到線程的切換和緩沖的開銷,並在降低延遲的同時提高了總體吞吐量。
