Shuffle階段,將按照Range大小排序的Range File 文件發(fā)送給對應的Sort程序。
Sort階段,Sort任務等待所需的數(shù)據(jù)都到齊了,就啟動基于基數(shù)排序的排序操作,將排序結(jié)果寫入磁盤。
Partition和Sort階段是并行執(zhí)行的,待Sort完成后,輸出多個排序文件,由于Shuffle的時候已經(jīng)按照Range大小進行了排序,最終輸出的排序文件在全局是有序的。
4.前面您提到在軟件算法方面也做了不少優(yōu)化,能否具體介紹一下騰訊云做了哪些努力嗎?
蔣杰:參加這次比賽,我們在軟件算法上的優(yōu)化主要有以下三點:
(1)更強大的調(diào)度能力。此次比賽,騰訊云參加了GraySort和MinuteSort兩個大項的比賽,GraySort比拼的是完成100TB數(shù)據(jù)排序的耗時,主要評測的是系統(tǒng)對大規(guī)模數(shù)據(jù)的處理能力,MinuteSort比拼的是1分鐘內(nèi)的排序數(shù)量,主要評測的是系統(tǒng)的效率。為了在1分鐘內(nèi)完成盡可能多的數(shù)據(jù)排序,系統(tǒng)任務調(diào)度的開銷就變得不容忽視,調(diào)度效率顯得尤為關鍵,在系統(tǒng)上消耗的時間越少,越利于比賽成績的提高,得益于平臺強大的調(diào)度能力,我們在1分鐘內(nèi)完成了55.3TB數(shù)據(jù)的排序,是之前最好紀錄的5倍。我們的調(diào)度系統(tǒng)曾做了大量的優(yōu)化,在騰訊的內(nèi)部系統(tǒng)上,每天調(diào)度達2億次,在海量系統(tǒng)上得以驗證。
(2)內(nèi)存存儲的最大化利用。在排序過程中的中間數(shù)據(jù),盡量存儲在內(nèi)存中,當內(nèi)存中數(shù)據(jù)達到一定閾值,快要占滿整個內(nèi)存空間的時候,才會啟動向磁盤中寫入數(shù)據(jù),最大化利用內(nèi)存存儲。而我們的系統(tǒng)具備調(diào)度感知的能力,當系統(tǒng)內(nèi)存充足的時候,會讓該環(huán)節(jié)的計算任務完全在內(nèi)存中完成計算,無需落地到磁盤,極大的提升了系統(tǒng)的處理能力。
(3)并行操作和IO優(yōu)化。在Partition階段和Sort階段,我們都采取了多任務的并行操作。在這里我們會根據(jù)機器和網(wǎng)絡的性能來調(diào)整機器上的并發(fā)數(shù),來提高整個系統(tǒng)的運行效率。為了提升網(wǎng)絡的傳輸效率,優(yōu)化了整個網(wǎng)絡傳輸系統(tǒng)。在網(wǎng)絡的傳輸中,過小的分片數(shù)據(jù)會帶來額外的控制信息的傳輸,造成網(wǎng)絡帶寬實際上并不能完全跑滿。對此我們采用大數(shù)據(jù)塊的傳輸,在發(fā)送端對小的數(shù)據(jù)片進行合并,在接收端,對收到的數(shù)據(jù)包進行聚合后再傳遞給上層協(xié)議棧,來提高整個系統(tǒng)的數(shù)據(jù)傳送能力,從而榨干這些機器間的網(wǎng)絡帶寬,通過優(yōu)化,集群的整體吞吐可以得到極大的提升。