Flink作業(yè)問(wèn)題分析和調(diào)優(yōu)實(shí)踐
Checkpoint 機(jī)制
1.什么是 checkpoint


2.實(shí)例分析


■ CK的分析過(guò)程

■ Snapshot & Recover




■ checkpoint 的注意事項(xiàng)

3.背壓的產(chǎn)生及 Flink 的反壓處理







■ Credit-Based







首先是要砍掉 cutoff 的部分,默認(rèn)是0.25,所以我們的可用內(nèi)存就是 8gx0.75 network buffers 占用可用內(nèi)存的 0.1 ,所以是 6144x0.1 堆內(nèi)/堆外內(nèi)存為可用內(nèi)存減去 network buffers 的部分,再乘以 0.8 給到用戶使用的內(nèi)存就是堆內(nèi)存剩下的 0.2 那部分
Flink 作業(yè)的問(wèn)題定位
1.問(wèn)題定位口訣
看反壓:通常最后一個(gè)被壓高的 subTask 的下游就是 job 的瓶頸之一。
看 Checkpoint 時(shí)長(zhǎng):Checkpoint 時(shí)長(zhǎng)能在一定程度影響 job 的整體吞吐。
看核心指標(biāo):指標(biāo)是對(duì)一個(gè)任務(wù)性能精準(zhǔn)判斷的依據(jù),延遲指標(biāo)和吞吐則是其中最為關(guān)鍵的指標(biāo)。
資源的使用率:提高資源的利用率是最終的目的。
■ 常見(jiàn)的性能問(wèn)題

在關(guān)注背壓的時(shí)候大家往往忽略了數(shù)據(jù)的序列化和反序列化過(guò)程所造成的性能問(wèn)題。 一些數(shù)據(jù)結(jié)構(gòu),比如 HashMap 和 HashSet 這種 key 需要經(jīng)過(guò) hash 計(jì)算的數(shù)據(jù)結(jié)構(gòu),在數(shù)據(jù)量大的時(shí)候使用 keyby 進(jìn)行操作, 造成的性能影響是非常大的。 數(shù)據(jù)傾斜是我們的經(jīng)典問(wèn)題,后面再進(jìn)行展開(kāi)。 如果我們的下游是 MySQL,HBase 這種,我們都會(huì)進(jìn)行一個(gè)批處理的操作,就是讓數(shù)據(jù)存儲(chǔ)到一個(gè) buffer 里面,在達(dá)到某些條件的時(shí)候再進(jìn)行發(fā)送,這樣做的目的就是減少和外部系統(tǒng)的交互,降低網(wǎng)絡(luò)開(kāi)銷的成本。 頻繁 GC ,無(wú)論是 CMS 也好,G1 也好,在進(jìn)行 GC 的時(shí)候,都會(huì)停止整個(gè)作業(yè)的運(yùn)行,GC 時(shí)間較長(zhǎng)還會(huì)導(dǎo)致 JobManager 和 TaskManager 沒(méi)有辦法準(zhǔn)時(shí)發(fā)送心跳,此時(shí) JobManager 就會(huì)認(rèn)為此 TaskManager 失聯(lián),它就會(huì)另外開(kāi)啟一個(gè)新的 TaskManager 窗口是一種可以把無(wú)限數(shù)據(jù)切割為有限數(shù)據(jù)塊的手段。比如我們知道,使用滑動(dòng)窗口的時(shí)候數(shù)據(jù)的重疊問(wèn)題,size = 5min 雖然不屬于大窗口的范疇,可是 step = 1s 代表1秒就要進(jìn)行一次數(shù)據(jù)的處理,這樣就會(huì)造成數(shù)據(jù)的重疊很高,數(shù)據(jù)量很大的問(wèn)題。
2.Flink 作業(yè)調(diào)優(yōu)






■ 數(shù)據(jù)傾斜




■ 內(nèi)存調(diào)優(yōu)




總 結(jié)
https://ververica.cn/developers/flink-training-course-operation/
評(píng)論
圖片
表情
