flink學習 2 架構

2021-10-07 04:15:08 字數 1986 閱讀 9052

flink 執行時的元件

任務管理器taskmanager

flink的工作程序。通常在flink中會有多個taskmanager執行,每乙個taskmanager都包含了一定數量的插槽(slots)。插槽的數量限制了taskmanager能夠執行的任務數量。

啟動之後,taskmanager會向資源管理器註冊它的插槽;收到資源管理器指令後,taskmanager就會將乙個或多個插槽提供給jobmanager呼叫。jonbmanager就可以向插槽分配任務來執行。

在執行過程中,乙個taskmanager可以跟其他執行同一應用程式的taskmanager交換資料。

資源管理器 resourcemanager

主要負責管理務管理器的插槽slot,taskmanager插槽是flink中定義的處理資源單元。

flink為不同的環境和資源管理工具提供了不同資源管理器,如yarn、mesos、k8s,以及standalone部署。

當jobmanager申請插槽資源時,resourcemanager會將有空閒插槽的taskmanager分配給jobmanager。如果resourcemanager沒有足夠的插槽滿足jobmanager請求,它還可以向資源提供平台發起會話,以提供啟動taskmanager程序的容器。

分發器 dispatcher

可以跨作業執行,它為應用提供了rest介面。

當乙個應用被提交執行時,分發器就會啟動並將應用移交給jobmanager。

dispatcher也會

啟動乙個 web ui 用來方便地展示和監控作業執行的資訊。

dispatcher在架構中可能並不是必需的,這取決於應用提交執行的方式。

standalone 模式    flink 任務提交流程

任務提交流程(yarn)

任務排程原理

taskmanager和slots

taskmanager可以看做乙個程序 task on slot 可以看作乙個執行緒

每乙個執行緒執行在固定的計算資源上,這個資源就是slot

slot之間記憶體不共享 cpu共享

所以slot數量配成cpu核心數 可以更好的提高cpu利用率

並行:資料並行:同乙個任務,不同的並行子任務,同時處理不同的資料

任務並行:同一時間,不同的slot在執行不同的任務

資料傳輸形式

乙個程式中,不同的運算元可能有不同的並行度

運算元之間傳輸資料的形式可以是one-to-one(forwarding)的模式亦可以是redistributing的模式,具體是哪一種,取決於運算元的種類

one-to-one:stream維護著分割槽以及元素的順序。(如source 和 map 運算元之間) 這意味著map的運算元的子任務看到元素個數以及順序跟source運算元的子任務生產的元素的個數,順序相同。map,filter,flatmap等運算元都是one-to-one的對應關係

redistributing:stream的分割槽會發生改變,每乙個運算元的子任務 依據所選擇的 transformation傳送資料到不同的目標任務。 如 :keyby運算元會基於hashcode重分割槽,而brodcast和reblance會隨機重新分割槽,這些運算元都會引起redistribute過程,而redistribute過程就類似於spark中的shuffle過程。

和spark的窄依賴和寬依賴類似  窄依賴且 相同並行度的 的可以合併在一起執行 寬依賴的 不行

這個是flink 的任務鏈優化技術

taskmanager和slot數量決定了 並行處理的最大能力

但是不一定程式執行時一定都能用到。程式執行時的並行度才是用到的能力。

struts2 架構剖析

一 xwork2 struts2的基礎 struts2框架有兩部分組成,xwork和struts2。xwork是乙個命令模式框架,他是struts2的基礎。xwork提供很多核心功能ioc 控制反轉 容器,強大的表示式語言 資料型別轉換,驗證和可插入的配置。xwork框架的核心包括action re...

flink學習 flink架構

flink結構 graph 2個併發度 source為1個併發度 的sockettextstreamwordcount四層執行圖的演變過程 jobgraph streamgraph經過優化後生成了 jobgraph,提交給 jobmanager 的資料結構。executiongraph jobman...

架構學習一 架構概要總覽

架構學習一 架構概要總覽1 架構的主要複雜點 高效能 高可用 可擴充套件 低成本 安全 規模 2 架構設計的目的 根據實際情況,選擇合適的技術方案。一味的套用大公司或者高大上的技術方案是不成熟,大概率會造成異常技術災難。架構設計首先要找到系統的痛點,針對此來進行設計。3 架構設計的主要流程 1 找到...