Flink 大規(guī)模作業(yè)調(diào)度性能優(yōu)化
性能測(cè)評(píng)結(jié)果 基于拓?fù)浣Y(jié)構(gòu)的優(yōu)化 優(yōu)化任務(wù)部署 針對(duì) Pipelined Region 構(gòu)建的優(yōu)化
需要很長(zhǎng)時(shí)間才能完成作業(yè)的調(diào)度和部署; 需要大量?jī)?nèi)存來(lái)存儲(chǔ)作業(yè)的執(zhí)行拓?fù)鋱D以及部署時(shí)所需的臨時(shí)變量,并且在運(yùn)行過(guò)程中會(huì)出現(xiàn)頻繁的長(zhǎng)時(shí)間 GC,影響集群穩(wěn)定性;
為了優(yōu)化 Flink 調(diào)度大規(guī)模作業(yè)的性能,我們?cè)?Flink 1.13 版本和 1.14 版本進(jìn)行了以下優(yōu)化:
針對(duì)拓?fù)浣Y(jié)構(gòu)引入分組概念,優(yōu)化與拓?fù)湎嚓P(guān)的計(jì)算邏輯,主要包括作業(yè)初始化、Task 調(diào)度以及故障恢復(fù)時(shí)計(jì)算需要重啟的 Task 節(jié)點(diǎn)等等。與此同時(shí),該優(yōu)化降低了執(zhí)行拓?fù)湔加玫膬?nèi)存空間; 引入緩存機(jī)制優(yōu)化任務(wù)部署,優(yōu)化后部署速度更快且所需內(nèi)存更少; 基于邏輯拓?fù)浜蛨?zhí)行拓?fù)涞奶匦赃M(jìn)行優(yōu)化以加快 Pipelined Region 的構(gòu)建速度,從而降低作業(yè)初始化所需的時(shí)間。
一、性能評(píng)測(cè)結(jié)果
1.12 | 1.14 | 時(shí)間降低百分比(%) | |
作業(yè)初始化 | 11,431ms | 627ms | 94.51% |
任務(wù)部署 | 63,118ms | 17,183ms | 72.78% |
故障恢復(fù)時(shí)計(jì)算重啟節(jié)點(diǎn) | 37,195ms | 170ms | 99.55% |
二、基于拓?fù)浣Y(jié)構(gòu)的優(yōu)化

圖 1 目前 Flink 的兩種分發(fā)模式

三、優(yōu)化任務(wù)部署
目前任務(wù)部署包含以下幾個(gè)階段:
JobManager 在主線程內(nèi)為每一個(gè) Task 創(chuàng)建任務(wù)部署描述符 (TaskDeploymentDescriptor,以下簡(jiǎn)稱 TDD); JobManager 在異步線程內(nèi)將這些 TDD 進(jìn)行序列化; JobManager 通過(guò) RPC 通信將序列化后的 TDD 發(fā)送至 TaskManager; TaskManager 基于 TDD 創(chuàng)建任務(wù)并執(zhí)行。
3.1 為 ShuffleDescriptor 添加緩存機(jī)制
3.2 通過(guò) Blob 服務(wù)器分發(fā) ShuffleDescriptor

四、針對(duì) Pipelined Region 構(gòu)建的優(yōu)化



數(shù)倉(cāng)建?!笜?biāo)體系
數(shù)倉(cāng)建?!獙挶淼脑O(shè)計(jì)
Spark SQL知識(shí)點(diǎn)與實(shí)戰(zhàn)
Hive計(jì)算最大連續(xù)登陸天數(shù)
Flink計(jì)算pv和uv的通用方法
交流群
加我微信:ddxygq,回復(fù)“加群”,我拉你進(jìn)大數(shù)據(jù)交流群。
評(píng)論
圖片
表情
