百度運(yùn)用FPGA方法大規(guī)模加速SQL查詢(xún)
盡管我們對(duì)百度今年工作焦點(diǎn)的關(guān)注集中在這個(gè)中國(guó)搜索巨頭在深度學(xué)習(xí)方面的舉措上,許多其他的關(guān)鍵的,盡管不那么前沿的應(yīng)用表現(xiàn)出了大數(shù)據(jù)帶來(lái)的挑戰(zhàn)。
正如百度的歐陽(yáng)劍在本周 Hot Chips 大會(huì)上談?wù)摰?,百度坐擁超過(guò) 1 EB 的數(shù)據(jù),每天處理大約 100 PB 的數(shù)據(jù),每天更新 100 億的網(wǎng)頁(yè),每 24 小時(shí)更新處理超過(guò) 1 PB 的日志更新,這些數(shù)字和 Google 不分上下,正如人們所想象的。百度采用了類(lèi)似 Google 的方法去大規(guī)模地解決潛在的瓶頸。
正如剛剛我們談到的,Google 尋找一切可能的方法去打敗摩爾定律,百度也在進(jìn)行相同的探索,而令人激動(dòng)的、使人著迷的機(jī)器學(xué)習(xí)工作是迷人的,業(yè)務(wù)的核心關(guān)鍵任務(wù)的加速同樣也是,因?yàn)楸仨毴绱?。歐陽(yáng)提到,公司基于自身的數(shù)據(jù)提供高端服務(wù)的需求和 CPU 可以承載的能力之間的差距將會(huì)逐漸增大。
對(duì)于百度的百億億級(jí)問(wèn)題,在所有數(shù)據(jù)的接受端是一系列用于數(shù)據(jù)分析的框架和平臺(tái),從該公司的海量知識(shí)圖譜,多媒體工具,自然語(yǔ)言處理框架,推薦引擎,和點(diǎn)擊流分析都是這樣。簡(jiǎn)而言之,大數(shù)據(jù)的首要問(wèn)題就是這樣的:一系列各種應(yīng)用和與之匹配的具有壓倒性規(guī)模的數(shù)據(jù)。
當(dāng)談到加速百度的大數(shù)據(jù)分析,所面臨的幾個(gè)挑戰(zhàn),歐陽(yáng)談到抽象化運(yùn)算核心去尋找一個(gè)普適的方法是困難的。“大數(shù)據(jù)應(yīng)用的多樣性和變化的計(jì)算類(lèi)型使得這成為一個(gè)挑戰(zhàn),把所有這些整合成為一個(gè)分布式系統(tǒng)是困難的,因?yàn)橛卸嘧兊钠脚_(tái)和編程模型(MapReduce,Spark,streaming,user defined,等等)。將來(lái)還會(huì)有更多的數(shù)據(jù)類(lèi)型和存儲(chǔ)格式。”
盡管存在這些障礙,歐陽(yáng)講到他們團(tuán)隊(duì)找到了(它們之間的)共同線索。如他所指出的那樣,那些把他們的許多數(shù)據(jù)密集型的任務(wù)相連系在一起的就是傳統(tǒng)的 SQL。“我們的數(shù)據(jù)分析任務(wù)大約有 40% 是用 SQL 寫(xiě)的,而其他的用 SQL 重寫(xiě)也是可用做到的。” 更進(jìn)一步,他講道他們可以享受到現(xiàn)有的 SQL 系統(tǒng)的好處,并可以和已有的框架相匹配,比如 Hive,Spark SQL,和 Impala 。下一步要做的事情就是 SQL 查詢(xún)加速,百度發(fā)現(xiàn) FPGA 是最好的硬件。
這些主板,被稱(chēng)為處理單元( 下圖中的 PE ),當(dāng)執(zhí)行 SQL 時(shí)會(huì)自動(dòng)地處理關(guān)鍵的 SQL 功能。這里所說(shuō)的都是來(lái)自演講,我們不承擔(dān)責(zé)任。確切的說(shuō),這里提到的 FPGA 有點(diǎn)神秘,或許是故意如此。如果百度在基準(zhǔn)測(cè)試中得到了如下圖中的提升,那這可是一個(gè)有競(jìng)爭(zhēng)力的信息。后面我們還會(huì)繼續(xù)介紹這里所描述的東西。簡(jiǎn)單來(lái)說(shuō),F(xiàn)PGA 運(yùn)行在數(shù)據(jù)庫(kù)中,當(dāng)其收到 SQL 查詢(xún)的時(shí)候,該團(tuán)隊(duì)設(shè)計(jì)的軟件就會(huì)與之緊密結(jié)合起來(lái)。
歐陽(yáng)提到了一件事,他們的加速器受限于 FPGA 的帶寬,不然性能表現(xiàn)本可以更高,在下面的評(píng)價(jià)中,百度安裝了 2 塊12 核心,主頻 2.0 GHz 的 intl E26230 CPU,運(yùn)行在 128G 內(nèi)存。SDA 具有 5 個(gè)處理單元,(上圖中的 300MHz FPGA 主板)每個(gè)分別處理不同的核心功能(篩選filter,排序sort,聚合aggregate,聯(lián)合join和分組group by)
為了實(shí)現(xiàn) SQL 查詢(xún)加速,百度針對(duì) TPC-DS 的基準(zhǔn)測(cè)試進(jìn)行了研究,并且創(chuàng)建了稱(chēng)做處理單元(PE)的特殊引擎,用于在基準(zhǔn)測(cè)試中加速 5 個(gè)關(guān)鍵功能,這包括篩選filter,排序sort,聚合aggregate,聯(lián)合join和分組group by,(我們并沒(méi)有把這些單詞都像 SQL 那樣大寫(xiě))。SDA 設(shè)備使用卸載模型,具有多個(gè)不同種類(lèi)的處理單元的加速卡在 FPGA 中組成邏輯,SQL 功能的類(lèi)型和每張卡的數(shù)量由特定的工作量決定。由于這些查詢(xún)?cè)诎俣鹊南到y(tǒng)中執(zhí)行,用來(lái)查詢(xún)的數(shù)據(jù)被以列格式推送到加速卡中(這會(huì)使得查詢(xún)非??焖?,而且通過(guò)一個(gè)統(tǒng)一的 SDA API 和驅(qū)動(dòng)程序,SQL 查詢(xún)工作被分發(fā)到正確的處理單元而且 SQL 操作實(shí)現(xiàn)了加速。
SDA 架構(gòu)采用一種數(shù)據(jù)流模型,加速單元不支持的操作被退回到數(shù)據(jù)庫(kù)系統(tǒng)然后在那里本地運(yùn)行,比其他任何因素,百度開(kāi)發(fā)的 SQL 加速卡的性能被 FPGA 卡的內(nèi)存帶寬所限制。加速卡跨整個(gè)集群機(jī)器工作,順便提一下,但是數(shù)據(jù)和 SQL 操作如何分發(fā)到多個(gè)機(jī)器的準(zhǔn)確原理沒(méi)有被百度披露。
我們受限與百度所愿意披露的細(xì)節(jié),但是這些基準(zhǔn)測(cè)試結(jié)果是十分令人鼓舞的,尤其是 Terasort 方面,我們將在 Hot Chips 大會(huì)之后跟隨百度的腳步去看看我們是否能得到關(guān)于這是如何連接到一起的和如何解決內(nèi)存帶寬瓶頸的細(xì)節(jié)。