大數(shù)據(jù)任務(wù)執(zhí)行時(shí)間優(yōu)化案例分享,大數(shù)據(jù)技術(shù)下如何提高預(yù)處理能力大數(shù)據(jù)任務(wù)執(zhí)行時(shí)間優(yōu)化案例分享問(wèn)題的背景在項(xiàng)目中,大數(shù)據(jù)的任務(wù)執(zhí)行時(shí)間較長(zhǎng),需要進(jìn)行優(yōu)化,使大數(shù)據(jù)的任務(wù)執(zhí)行時(shí)間優(yōu)化到客戶可以接受的時(shí)間。分析兩個(gè)原因 業(yè)務(wù)場(chǎng)景分析該場(chǎng)景中的大數(shù)據(jù)任務(wù)主要是對(duì)數(shù)據(jù)進(jìn)行mapreduce操作,包括兩個(gè)子任務(wù)。第一個(gè)子任務(wù)的地圖......
問(wèn)題的背景
在項(xiàng)目中,大數(shù)據(jù)的任務(wù)執(zhí)行時(shí)間較長(zhǎng),需要進(jìn)行優(yōu)化,使大數(shù)據(jù)的任務(wù)執(zhí)行時(shí)間優(yōu)化到客戶可以接受的時(shí)間。
分析兩個(gè)原因
業(yè)務(wù)場(chǎng)景分析
該場(chǎng)景中的大數(shù)據(jù)任務(wù)主要是對(duì)數(shù)據(jù)進(jìn)行mapreduce操作,包括兩個(gè)子任務(wù)。第一個(gè)子任務(wù)的地圖數(shù)量(每張地圖大小為128M)約為4300張(這些地圖任務(wù)分散在不同的服務(wù)器上,泰山集群有6400+核處理,可以充分利用泰山的多核優(yōu)勢(shì))。地圖的執(zhí)行時(shí)間是10分鐘。但reduce的數(shù)量固定為200(即最多200個(gè)內(nèi)核并行處理reduce任務(wù)),reduce的執(zhí)行時(shí)間約為1小時(shí)30分鐘,耗時(shí)較長(zhǎng)。同時(shí)reduce的數(shù)量少于map的數(shù)量,無(wú)法充分發(fā)揮泰山多核的優(yōu)勢(shì),第二個(gè)子任務(wù)也是reduce階段,耗時(shí)較長(zhǎng)。
服務(wù)器基礎(chǔ)的性能分析
執(zhí)行大數(shù)據(jù)任務(wù)時(shí),cpu利用率不高,磁盤io和網(wǎng)卡IO不存在瓶頸。但是,網(wǎng)卡中斷需要綁定到內(nèi)核,并且可以調(diào)整磁盤緩存參數(shù)來(lái)提高性能。
三種解決方案
3.1網(wǎng)卡調(diào)整
3.1.1中斷核結(jié)合
中斷關(guān)聯(lián)性被描述為一組能夠?qū)μ囟ㄖ袛嘧龀鲰憫?yīng)的CPU。如果應(yīng)用程序可以通過(guò)關(guān)聯(lián)相關(guān)的CPU在相同的CPU上下文中處理收到的數(shù)據(jù)包,則可以減少等待時(shí)間并提高CPU利用率。
因此,我們可以將處理網(wǎng)卡中斷的CPU內(nèi)核設(shè)置在網(wǎng)卡所在的NUMA上,從而減少跨NUMA內(nèi)存訪問(wèn)帶來(lái)的額外開(kāi)銷,提高網(wǎng)絡(luò)處理性能。
3.2磁盤參數(shù)調(diào)整
3.2.1磁盤讀取預(yù)取參數(shù)
/sys/block/sdx/queue/read ahead。該參數(shù)對(duì)于順序讀取非常有用。意思是,一次提前看多少內(nèi)容,不管實(shí)際需要多少。默認(rèn)情況下,一次讀取128kb遠(yuǎn)小于您想要讀取的內(nèi)容。設(shè)置大一點(diǎn)對(duì)于讀取大文件非常有用,可以有效減少讀尋道的次數(shù)。該參數(shù)可通過(guò)使用塊dev–setra進(jìn)行設(shè)置。setra設(shè)置了多少個(gè)扇區(qū),因此實(shí)際字節(jié)除以2。例如,設(shè)置512實(shí)際讀取256個(gè)字節(jié)。
原始服務(wù)器值是128kb,它被設(shè)置為4096Kb。
3.2.2緩存寫入磁盤的參數(shù)調(diào)整
/proc/sys/vm/dirtyratio從20更改為40
此參數(shù)控制文件系統(tǒng)的文件系統(tǒng)寫緩沖區(qū)的大小。單位是百分比,表示系統(tǒng)內(nèi)存的百分比。它表示當(dāng)寫緩沖區(qū)用完系統(tǒng)內(nèi)存時(shí),它開(kāi)始向磁盤寫入數(shù)據(jù)。如果增加,更多的系統(tǒng)內(nèi)存將用于磁盤寫緩沖,系統(tǒng)的寫性能也將大大提高。
/proc/sys/VM/dirty background ratio從10更改為20
此參數(shù)控制文件系統(tǒng)的pdflush進(jìn)程以及何時(shí)刷新磁盤。是單位百分比,表示系統(tǒng)內(nèi)存的百分比。這意味著當(dāng)寫緩沖區(qū)用完系統(tǒng)內(nèi)存時(shí),pdflush開(kāi)始向磁盤寫入數(shù)據(jù)。
如果增加,更多的系統(tǒng)內(nèi)存將用于磁盤寫緩沖,系統(tǒng)的寫性能也將大大提高。
/proc/sys/VM/dirty write back centi secs從500更改為800
此參數(shù)控制內(nèi)核的臟數(shù)據(jù)刷新進(jìn)程pdflush的運(yùn)行間隔。單位是1/100秒。默認(rèn)值為500,即5秒。
/proc/sys/VM/dirty expire centi secs從3000更改為30000。
該參數(shù)聲明Linux內(nèi)核寫緩沖區(qū)中的數(shù)據(jù)為“舊”后,pdflush進(jìn)程開(kāi)始考慮將其寫入磁盤。單位是1/100秒。默認(rèn)是30000,也就是說(shuō)即使30秒的數(shù)據(jù)是舊的,也會(huì)刷新磁盤。
對(duì)于特別重載的寫操作,適當(dāng)降低這個(gè)值也是好的,但是不能降低太多,因?yàn)榻档吞鄷?huì)導(dǎo)致IO增加過(guò)快。
3.3應(yīng)用程序調(diào)整
3.3.1優(yōu)化數(shù)量的減少
調(diào)整大數(shù)據(jù)平臺(tái)上的reduce設(shè)置,使最大reduce數(shù)由200改為500,性能明顯提升。
3.3.2 Reduce并行復(fù)制參數(shù)maprd.reduce.parallel.copies優(yōu)化
reduce的并發(fā)副本數(shù)默認(rèn)為5,后來(lái)調(diào)整為30可以增加Reduce的最大并發(fā)副本數(shù)。
調(diào)優(yōu)后,最終大數(shù)據(jù)任務(wù)執(zhí)行時(shí)間有了顯著提升。
四總結(jié)
調(diào)優(yōu)后,任務(wù)在泰山集群服務(wù)器上的執(zhí)行時(shí)間明顯改善。相關(guān)想法總結(jié)如下:
分析確認(rèn)大數(shù)據(jù)任務(wù)執(zhí)行各階段耗時(shí),重點(diǎn)關(guān)注耗時(shí)階段,提高降低并發(fā),充分利用泰山多核優(yōu)勢(shì)。
找出性能瓶頸,優(yōu)化服務(wù)器各子模塊的參數(shù)。
特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場(chǎng)。如有關(guān)于作品內(nèi)容、版權(quán)或其它問(wèn)題請(qǐng)于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。
二維碼加載中...
使用微信掃一掃登錄
使用賬號(hào)密碼登錄
平臺(tái)顧問(wèn)
微信掃一掃
馬上聯(lián)系在線顧問(wèn)
小程序
ESG跨境小程序
手機(jī)入駐更便捷
返回頂部