2020-08-16:數(shù)據(jù)任務是怎么優(yōu)化的?(數(shù)據(jù)傾斜,參數(shù)相關調節(jié))
福哥答案2020-08-16:

[此答案【來自華為云社區(qū)】的【阿剛】](https://bbs.huaweicloud.com/blogs/147398)
一 問題背景
項目中遇到大數(shù)據(jù)任務執(zhí)行時間比較長,需要進行優(yōu)化,使得大數(shù)據(jù)的任務執(zhí)行時間優(yōu)化至客戶可以接受的時間。
二 原因分析
l? 業(yè)務場景分析
本場景下的大數(shù)據(jù)任務主要對數(shù)據(jù)進行mapreduce操作,該任務包含兩個子任務,第一個子任務的map(每個map的大小為128M)個數(shù)為4300左右(這些map任務都是分散在不同的服務器上,TaiShan集群有6400+個核可以處理,可以充分利用TaiShan多核優(yōu)勢),map執(zhí)行時間為10分鐘,但是reduce個數(shù)固定寫為200個(即最多有200個核并行處理reduce任務),reduce執(zhí)行時間為1小時30分鐘左右,耗時較長,同時reduce個數(shù)相比map個數(shù)很少,不能充分利用TaiShan多核優(yōu)勢,第二個子任務也是reduce階段耗時較長
l? 服務器基礎性能分析
在大數(shù)據(jù)任務執(zhí)行時,cpu利用率不高,磁盤io以及網卡IO都沒有瓶頸,不過網卡中斷需要進行綁核,同時磁盤緩存參數(shù)可以進行調優(yōu)來提升性能
三 解決方案
3.1 網卡調優(yōu)
3.1.1 中斷綁核
中斷親和度描述為可以為特定中斷提供響應的一組CPU,如果應用程序可以通過關聯(lián)到相關的CPU,在相同的CPU上下文中處理接收到的數(shù)據(jù)包,則可以減少等待時間,提高CPU利用率。
因此,我們可以將處理網卡中斷的CPU core設置在網卡所在的NUMA上,從而減少跨NUMA的內存訪問所帶來的額外開銷,提升網絡處理性能。
3.2 磁盤參數(shù)調優(yōu)
3.2.1 磁盤讀預取參數(shù)
/sys/block/sdX/queue/read_ahead,這個參數(shù)對順序讀非常有用,意思是,一次提前讀多少內容,無論實際需要多少。默認一次讀 128kb 遠小于要讀的,設置大些對讀大文件非常有用,可以有效的減少讀 seek 的次數(shù),這個參數(shù)可以使用 blockdev –setra 來設置,setra 設置的是多少個扇區(qū),所以實際的字節(jié)是除以2,比如設置 512 ,實際是讀 256 個字節(jié).
原服務器值是128kb, 設置為4096Kb。
3.2.2 緩存寫入磁盤參數(shù)調整
/proc/sys/vm/dirty_ratio 從20改成40
這個參數(shù)控制文件系統(tǒng)的文件系統(tǒng)寫緩沖區(qū)的大小,單位是百分比,表示系統(tǒng)內存的百分比,表示當寫緩沖使用到系統(tǒng)內存多少的時候,開始向磁盤寫出數(shù)據(jù)。增大之會使用更多系統(tǒng)內存用于磁盤寫緩沖,也可以極大提高系統(tǒng)的寫性能。
/proc/sys/vm/dirty_background_ratio 從10改為20
這個參數(shù)控制文件系統(tǒng)的pdflush進程,在何時刷新磁盤。單位是百分比,表示系統(tǒng)內存的百分比,意思是當寫緩沖使用到系統(tǒng)內存多少的時候,pdflush開始向磁盤寫出數(shù)據(jù)。
增大之會使用更多系統(tǒng)內存用于磁盤寫緩沖,也可以極大提高系統(tǒng)的寫性能。
/proc/sys/vm/dirty_writeback_centisecs 從500改為800
這個參數(shù)控制內核的臟數(shù)據(jù)刷新進程pdflush的運行間隔。單位是 1/100 秒。缺省數(shù)值是500,也就是 5 秒
/proc/sys/vm/dirty_expire_centisecs 從3000改為30000
這個參數(shù)聲明Linux內核寫緩沖區(qū)里面的數(shù)據(jù)多“舊”了之后,pdflush進程就開始考慮寫到磁盤中去。單位是 1/100秒。缺省是 30000,也就是 30 秒的數(shù)據(jù)就算舊了,將會刷新磁盤。
對于特別重載的寫操作來說,這個值適當縮小也是好的,但也不能縮小太多,因為縮小太多也會導致IO提高太快
3.3 應用程序調優(yōu)
3.3.1 Reduce個數(shù)優(yōu)化
在大數(shù)據(jù)平臺調整reduce設置,使最大reduce個數(shù)從原來的200改為500,性能提升明顯
3.3.2 Reduce并行copy參數(shù)maprd.reduce.parallel.copies優(yōu)化
Reduce的并發(fā)拷貝數(shù)默認是5,后來調整至30可以提升reduce的最大并發(fā)拷貝數(shù)
經過調優(yōu),最終大數(shù)據(jù)任務執(zhí)行時間有明顯提升
四總結
調優(yōu)后,TaiShan集群服務器上任務執(zhí)行時間有明顯改善。對相關思路總結如下:
l? 分析確認大數(shù)據(jù)任務執(zhí)行時各個階段的耗時,重點分析耗時階段,提升reduce并發(fā),充分利用TaiShan多核優(yōu)勢。
l? 明確性能瓶頸,并對服務器各個子模塊進行參數(shù)調優(yōu)。
大數(shù)據(jù) 任務調度
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。