隨著大數(shù)據(jù)時(shí)代的到來(lái),Presto作為一款高性能的分布式SQL查詢引擎,在B站得到了廣泛的應(yīng)用。本文將詳細(xì)介紹Presto在B站的性能優(yōu)化實(shí)踐,包括Presto集群的現(xiàn)狀、Local Cache的優(yōu)化、Index的改進(jìn)以及后續(xù)的工作計(jì)劃。
一、Presto集群現(xiàn)狀
B站的Presto集群每天處理約30萬(wàn)次查詢,每天處理約20PB的數(shù)據(jù),擁有超過(guò)1200個(gè)Worker節(jié)點(diǎn),分布在兩個(gè)IDC的六個(gè)集群中。當(dāng)前使用的Presto版本為330。
二、Presto Local Cache優(yōu)化
為了解決查詢不穩(wěn)定、熱表反復(fù)查詢以及網(wǎng)絡(luò)傳輸問(wèn)題,B站對(duì)Presto Local Cache進(jìn)行了優(yōu)化。通過(guò)開(kāi)發(fā)標(biāo)記服務(wù),將適合緩存的分區(qū)進(jìn)行標(biāo)記,并在構(gòu)建split時(shí)識(shí)別這些分區(qū)。同時(shí),引入了基于版本的元數(shù)據(jù)緩存、FileStatus cache、HDFS數(shù)據(jù)緩存到worker的SSD中、Worker緩存orc/parquet的footer信息等優(yōu)化措施。
三、Presto Index改進(jìn)
針對(duì)ORC/parquet內(nèi)嵌index少的問(wèn)題,B站實(shí)現(xiàn)了index語(yǔ)法,構(gòu)建index數(shù)據(jù),并寫入到Hdfs中進(jìn)行持久化。通過(guò)Coordinator側(cè)source split調(diào)度利用index進(jìn)行過(guò)濾,Worker側(cè)在讀orc文件時(shí),根據(jù)index過(guò)濾stripe或者具體的行數(shù)據(jù)。同時(shí),支持了BitMap Index、Bloomfilter Index和Min-Max Index等多種索引類型。
四、后續(xù)工作計(jì)劃
B站計(jì)劃支持物化列的讀寫、物化視圖提升查詢性能以及探索Native engine等后續(xù)工作。
總之,B站在Presto的性能優(yōu)化方面取得了顯著的成果,為用戶提供更加穩(wěn)定、高效的查詢服務(wù)。