外貿哪個職位最吃香站內seo優(yōu)化
Flink運行時架構
-
JobManager:協(xié)調,決定何時調度下一個task,對失敗任務做恢復。
- ResourceManager: 負責Flink集群中的資源提供、回收、分配,它負責管理task slot。standalone模式下,不能自行啟動新的taskmanager
- Dispatcher
- 提供一個REST接口,用來提交Flink應用程序執(zhí)行
- 為每個提交的作業(yè)啟動一個新的jobMaster
-運行Flink Web UI
- JobMaster: 負責管理單個JobGraph的執(zhí)行,我們的代碼Flink并不能直接執(zhí)行,需要翻譯為JobGraph才能執(zhí)行。
-
TaskManger: 必須有一個
- taskManaer和taskManager之間有數(shù)據交流
核心概念
- 并行度
-
并發(fā):多個任務,資源只有一份,需要競爭執(zhí)行
-
并行:多個任務,資源有多份,可以同時執(zhí)行
-
并行度:一個作業(yè)并行執(zhí)行的程序(數(shù)量)
-
設置并行度
- 1.代碼中設置全局并行度 :env.setParallelism(1);
- 2.在idea中執(zhí)行,,如果沒有明確設置并行,默認為CPU核數(shù)
- 3.在代碼中設置算子并行度,map().setParallelism()
- 4.不建議在代碼中設置并行度,一般在提交作業(yè)到集群時指定并行度 bin/flink -p 并行度
- 5.提交作業(yè)到集群,如果沒有設置和代碼中都沒有設置,使用集群配置的并行度,一般為1
-
優(yōu)先級:算子并行 > 全局并行度 > shell命令 > 配置文件
-
- 算子鏈
- 上下游算子數(shù)據分發(fā)規(guī)則(數(shù)據分區(qū)規(guī)則):ChannelSelector
- RebalancePartitioner: 輪循方式,上下游并行度不一致時,默認是rebalance
- RescalePartitioiiner: 相對負載均衡,按照輪循的方式將數(shù)據發(fā)送到下游組內Task的每個并行度中
- ShufflePartitioner: 洗牌,按照隨機的方式發(fā)送到下游Task的每個并行度中
- BroadcastPartioner: 廣播,根據下游并行度個數(shù),每個發(fā)一份
- GlobalPartitioner: 全局,所有的數(shù)據之后發(fā)送到下游task的第一個并行度中,強制并行度為1
- KeyGroupStreamPartioner: keyBy的效果,按照key的hash值決定發(fā)往下游的哪個并行度中
- ForwardPartitioner: 直連,上下游并行度一致。上游的并行度對應下游的并行度進行發(fā)送,如果上下游并行度一致,默認就是forward
- 算子鏈: 將上下游的多個Task合并成一個大的Task,形成的鏈條就是算子鏈
- 合并算子鏈:
- 1.上下游并行度必須一樣
- 2.數(shù)據的分發(fā)規(guī)則是forward
- 合并算子鏈的作用:減少線程間的切換,緩沖的開銷,并且減少延遲的同時增加整體吞吐量
- 能不能不合并?能
- 1.全局禁用算子鏈合并 env.disableOperatorChaining()
- 2.針對算子設置,startNewChain(): 開啟新的算子鏈,從當前算子開始,與后面的進行合并disableNewChain():前面和后面不參與算子鏈合并
- 上下游算子數(shù)據分發(fā)規(guī)則(數(shù)據分區(qū)規(guī)則):ChannelSelector