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