Flink知識學習(6)
Flink是一個基于Master-Slave風格的架構,Flink集群啟動時,會啟動一個JobManager進程、至少一個TaskManager進程。當Flink程序提交后,會創建一個Client來進行預處理,將程序轉換為一個表示完整Job的DAG,并提交到JobManager,最后JobManager將Job中的各個Task分配給TaskManager。Flink 中的計算資源通過Task Slot來定義。每個Task Slot 代表了TaskManager 的一個固定大小的資源池。例如,一個擁有3個slot的TaskManager會將其管理的內存平均分成三分分給各個slot。將資源slot 化意味著來自不同job的task不會出現內存競爭。slot目前僅支持內存的隔離,不支持CPU隔離。
Flink程序在執行的時候,會先被轉化為一個Streaming Dataflows,一個Streaming Dataflow是由一組Stream和Transformation Operator組成的DAG。
用戶首先提交Flink程序到JobClient,經過JobClient的處理、解析、優化提交到JobManager,最后由TaskManager運行task。
Client:Flink Client主要給用戶提供向Flink系統提交用戶任務(流式作業)的能力。
TaskManager:Flink系統的業務執行節點,執行具體的用戶任務。TaskManager可以有多個,各個TaskManager都平等。
JobManager:Flink系統的管理節點,管理所有的TaskManager,并決策用戶任務在哪些Taskmanager執行。JobManager在HA模式下可以有多個,但只有一個主JobManager。
TaskSlot:TaskSlot(任務槽)類似yarn中的container用于資源隔離,但是該組件只包含內存資源,不包含cpu資源。假如每一個TaskManager當中包含3個Task Slot,TaskManager最多能同時并發執行的任務是可以控制的,那就是3個, 因為不能超過slot的數量。slot有獨占的內存空間,這樣在一個TaskManager中可以運行多個不同的作業,作業之間不受影響。slot之間可以共享JVM資源, 可以共享Dataset和數據結構,也可以通過多路復用(Multiplexing) 共享TCP連接和心跳消息(Heatbeat Message)。
Task:任務執行的單元。
Flink
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。