百度開(kāi)放云總經(jīng)理劉旸看來(lái),解析計算當今世界正面臨著(zhù)由技術(shù)突破帶來(lái)的百度布式全行業(yè)升級,在這場(chǎng)(′ω`*)商業(yè)劇變中,開(kāi)放背??后是云分三個(gè)重要的「重新定義」:第一,云計算重新定義了「IT」。平臺它改變了企業(yè)所需要的對大的處 IT 資源的擁有與供給的方式,基于互聯(lián)網(wǎng)級的數據資源管理平臺,徹底改變(bian)了傳統企業(yè)的(de)解析計算 IT 模式,為新的百度布式商業(yè)創(chuàng )新提供了可能;
第二,大數據重定義了「資產(chǎn)」,開(kāi)放相較于以往的云分重資產(chǎn),企業(yè)在經(jīng)營(yíng)中不斷生成的平臺數據,將成ヾ(′▽?zhuān)??為企業(yè)未來(lái)繼續生存并??保持競爭力的對大的處砝碼;第三,人工智能重定義??了「效率」,數據通過(guò)語(yǔ)音、解(′ω`)析計算圖像、視頻、自然語(yǔ)言識別和??智能處理等技術(shù),讓傳統的計算機具備更為強大的能力,大幅提升工作效率。
基于以上三個(gè)重新定義,百度開(kāi)放云的重新堆棧也分(fen)為三層:云計算層、大數據應用層、和人工智能層。
處理大數據無(wú)非以下??四個(gè)步驟:
收集:原始數據種類(lèi)多樣,格式、位置、存儲、時(shí)效性等迥異。數據??收(′;д;`)集從(′?_?`)異構數據源中收集數據并轉換成相應的格式方便處理。
變形:原始數據需要變形與( ?ヮ?)增強之后才適合分析,比如網(wǎng)頁(yè)日志中把IP地址替換成省市、傳感器數據的糾錯、用戶(hù)(′▽?zhuān)?行為統計等。
分析:通過(guò)整理好的數據分(′?ω?`)析wh(′?_?`)at happened、why it happened、what is hap(′▽?zhuān)?)penin??g和what will happen,幫助企業(yè)決策。
其實(shí)??,如果涉??及到“??大數據&??rdquo;,不得不提百度最(′?ω?`)大的業(yè)務(wù)——搜索。百度搜索已經(jīng)收錄全世??界超過(guò)一萬(wàn)億的網(wǎng)頁(yè),每天響應中國網(wǎng)民大約幾十億次的請求。除此之外,百度還有另外20多(╬?益?)個(gè)用戶(hù)過(guò)億??的產(chǎn)品線(xiàn),而且各個(gè)產(chǎn)品底??層的大規模數據處理,都需要使用百度團隊維護的大數據處理平臺。
百度分布式計算平臺:離線(xiàn)引擎優(yōu)化
關(guān)于MapReduce
首先介紹主要的離線(xiàn)(xian)計算模型&mda(╯‵□′)╯sh;—MapReduce,百度從2007年開(kāi)始引進(jìn)Hadoop 0.15.1,隨后快速發(fā)展,2011年百度的MR單集群規模達到5000臺,到2013年已經(jīng)多達1.3萬(wàn)臺,這也是截止到目前為止全世界最大的單集群。Hadoop全集(??ヮ?)?*:???群規模為10萬(wàn)量級, 作業(yè)量達??到了百萬(wàn)量(liang)級,日均CPU利用率超過(guò)80%,遠超業(yè)界同行,百度開(kāi)放(fang)云(http://cloud.baidu.com)底層依賴(lài)的大規模集群調度、資源隔離等技術(shù)能力世界領(lǐng)先。除了在規模方面不斷擴大,百度一直在Hadoop性(O_O)能分析方面進(jìn)行了大量的優(yōu)化。20??13年的測試結果顯示,ヾ(′▽?zhuān)??百度內部ヽ(′ー`)ノMR??實(shí)現相比于開(kāi)源Hadoop性能提升30%。??典型優(yōu)化,例如Hadoop中的Shuffle,百度將其做成一個(gè)統一的shuffle服務(wù),不再占用Map或Reduce槽位。比??如對關(guān)鍵熱點(diǎn)函數采用SSE向量化等。
2014年,百度繼續對計算引擎做了大幅優(yōu)化, Nat?ive C++實(shí)現的DAG引擎正式上線(xiàn)。下圖是一(╯‵□′)╯個(gè) 4輪MR Job實(shí)現的典型??業(yè)務(wù)流示例,DAG引擎??上線(xiàn)后,可以?xún)?yōu)化成?一個(gè)DAG作業(yè)(ye),可以避免3次Reduce寫(xiě)多副本引入的磁盤(pán)IO及網(wǎng)絡(luò )IO,還可以規避2次Map讀HDFS的IO以及處理耗費。
下圖是一個(gè)真實(shí)業(yè)務(wù)由SQL計算表示層翻譯下來(lái)的,基于MR引擎時(shí)??,SQL會(huì )翻( ?ヮ?)譯??成25個(gè)MR JOB,如果百度把它優(yōu)化成DAG,能夠避免很多次磁盤(pán)IO操作。在優(yōu)化之后,運行時(shí)間直接縮減到1個(gè)小時(shí),優(yōu)化前后的差異非常顯著(zhù)。
內存(cun)流式Shuffle
2014年,百度對Shuff??le進(jìn)行重大重構,初期實(shí)習生同學(xué)完成的Demo以BaiduSort名義參與了2014年Sort BenchMark大數據排序國際大賽,并獲得冠軍(2015年百度沒(méi)再參加,國內其他公司以同樣技術(shù)通過(guò)更大規模集群刷新記錄)。2015年,新Shuffle技術(shù)完成全面上線(xiàn)。Hadoop默認Shuffle實(shí)現為基于磁盤(pán)Pull模式,計算過(guò)程顯式分成Map、Shuffle、Reduce過(guò)程;Baidu研發(fā)的新Shuffle采用??內存(╯‵□′)╯流式Push模式,Map端完成部分記錄處理后直接從內存中將計算結果推送給下游。
舉例(′-ι_-`)來(lái)說(shuō),Map處理256MB輸入數??據,在內存流式Shuffle模式下ヾ(′▽?zhuān)??,處理??完100條記錄以后,直接通過(guò)內存推送到下游,這樣就形成流水線(xiàn)方ヽ(′?`)ノ式處理。不再有顯式的Shuffle階段。
目前,該Shuffle組件為通用組件,正逐步推廣到其他分布式計算平臺中。
百度(????)分布式計算平臺:系統架構演??進(jìn)
前面重點(diǎn)介紹了百度開(kāi)放云BMR服務(wù)中涉及到的規模、性能方面優(yōu)化思路和效果,接下來(lái)跟大家一起分享一下,百度遇到的整體架構(??-)?方面挑戰以及優(yōu)化思路。
而MPI差別較(°o°)大,MPI是一個(gè)消息傳輸框架,它在設計之初就沒(méi)有考慮太多異常處理,因此它??對底層系統可靠性要求非常高。百度采用了非常高配置的服務(wù)器,例如帶Raid卡的sas硬盤(pán),超大內(′?`*)存、萬(wàn)兆互聯(lián)(lian)等。
BMR Hadoop由大量SATA硬盤(pán)的服務(wù)器構成,存儲系統為HDFS,資源調度層面百度有自研的調度器ARK(與社區Yarn比較類(lèi)似)。??而B(niǎo)ML大規模機器學(xué)習平臺上,支持的業(yè)務(wù)樣本超過(guò)數百億計量級,特征??規模也遠超百億。百度在運行機器學(xué)習時(shí),需要先啟動(dòng)MapReduce,然后再將數據從HDFS分發(fā)到各個(gè)(′?`*)MPI節???點(diǎn),這種方式對網(wǎng)絡(luò )帶寬的要求很高。
另外還有一個(gè)需求:MPI是一種事務(wù)性調度模型,比如一個(gè)業(yè)務(wù)需要2??00臺機器,如果平臺此時(shí)只有199臺機器空閑,實(shí)際也很難用起來(lái)(除非修改提交參數,但涉及輸??入數據重新分塊處理等比較復雜)。另外MPI計算往往顯式分為計算、傳輸、(╬ ò﹏ó)計算等階段(即BSP模型),因此資源利用波動(dòng)性較大,例如CPU計算階段,網(wǎng)絡(luò )空閑;網(wǎng)???絡(luò )傳輸或全局同步階段,CPU空閑。為解決這個(gè)問(wèn)題,百度在MPI集群中引入IDLE計算,IDLE業(yè)務(wù)資源占用充分可控,典型的IDLE任務(wù)如MapReduce任務(wù),而執行MR任務(wù)又會(huì )進(jìn)一步加劇MR集群和MPI集群間網(wǎng)絡(luò )帶寬?問(wèn)題。
基于以上考慮,百度正式將(╬?益?)MPI底層硬件替換為替換成高配置存儲型服務(wù)器,ヽ(′▽?zhuān)?ノ硬盤(pán)同構,文件??系統都采用HDFS,BML算法輸入和輸出均通過(guò)HDFS,不再是本地文件系統。
BML機器學(xué)習執行引擎層面,百度基于MPI封裝了DVCE(Distributed VectorComputingEngine)分布式向量計算引擎,屏蔽MPI過(guò)(′_`)于低層的編程接口,通過(guò)高層抽象自動(dòng)翻譯為MPI任務(wù),這就是??百度第二代(dai)專(zhuān)門(mén)針對&(′;ω;`)ldquo;并行計算”開(kāi)發(fā)的系(′▽?zhuān)?統框架。
2014年,BML機器學(xué)習執行引擎遷移到ELF第三代并行計算框架, ELF采用ParameterServer架構,大幅降低??機器學(xué)習算法開(kāi)發(fā)代價(jià),對比于百度的第二代框架DVCE,在開(kāi)發(fā)效率方面有大幅度的提升。離(li)線(xiàn)計算方面,完成了Native C++?? DAG引擎上線(xiàn),百度內部叫DCE(Distributed ComputingEngine)。
2015年的架構改進(jìn),主要是將所有的計算模型均遷移到Matrix+Normandy架構。Normandy兼容社??區Yarn調度接口,開(kāi)源社區新型興計算平臺可以很輕松的接入到百度的計算生態(tài)里。
百度已經(jīng)介紹了百度大數據分析和挖掘平臺主要的底層引擎和架構,接下來(lái)談一下最新思考。
系統底層是IDC硬件(′?_?`),接著(zhù)是Matrix,再是Normandy,然后是幾個(gè)主要的引擎。之前介紹底??層架構??的統一,比如在硬件、調度、存儲??等方面的統一。實(shí)際上各個(gè)系統對外的結果,都有自己的接口,如果要使用MR,很多人寫(xiě)MR程序都是直接調用Hadoop原生接(jie)口,配置涉及到的多個(gè)參數。部分業(yè)??務(wù)還需要流(liu)式系統完成日志清洗,在經(jīng)過(guò)MapReduce模(′?_?`)型批量預處理,隨后通過(guò)(guo)ELF完成機器學(xué)習模型訓練,最后再通過(guò)MapReduce模型完成模型評估,可ヽ(′▽?zhuān)?ノ見(jiàn)一個(gè)業(yè)務(wù)需要跨越多個(gè)模型,需要業(yè)務(wù)線(xiàn)同學(xué)同時(shí)熟悉很多模型和平臺,而每一個(gè)模型又有各自特點(diǎn)和┐(′д`)┌接口。只有足夠了解模型的細節和接口后,才能真正的利用好該模型。
于是百度正式立項BigFlow項目(原項目名DataFlow,??圖片未來(lái)及修改),將模型的細節屏蔽。平臺自動(dòng)決定選擇合適的并發(fā)度,甚至智能選擇應該把這個(gè)翻譯到哪個(gè)計算模型。BigFlow可以支持多個(gè)不同的計算引擎(每個(gè)引擎在其適合的領(lǐng)域做到極致),充分發(fā)揮各引擎性能和功能ヽ(′▽?zhuān)?ノ。所以用戶(hù)使用同一套接口,便能對應到不同的任(ren)務(wù)。由于采用高層抽象,業(yè)務(wù)開(kāi)??發(fā)效率獲得大幅提升,代碼量大幅減少,其維護成本也??大幅降低(di)。BigFlow集成常見(jiàn)優(yōu)化手段,因此將大幅提升平臺有效資源占用。
百度開(kāi)放云—&mdas(???)h;大數據+智能
最后,向??大家簡(jiǎn)要介紹百度開(kāi)放云。2014年,百度正式?jīng)Q定將服務(wù)內部業(yè)務(wù)多年的云計算技術(shù)正式對外提供服務(wù),即百度開(kāi)放云,對應官網(wǎng)http://cloud.baid(′_`)u.com。百度開(kāi)放云大數據方面,BMR已經(jīng)對外開(kāi)放,而更多的?大數據分析和服務(wù)都還未對外開(kāi)放。BMR集群上可以(yi)做到按需部署??,用戶(hù)專(zhuān)享,更關(guān)鍵的是完全兼容開(kāi)源的Hadoop/Spark平臺,開(kāi)放云客戶(hù)基于Hadoop、Spark(′?`)、Hbase等已經(jīng)實(shí)現的大數據業(yè)務(wù)幾乎不用修改(gai)就可以平滑遷移到云上。多(′ω`)維分析服務(wù)Palo,它完全兼容MySQL網(wǎng)絡(luò )協(xié)議,因(yin)此,客戶(hù)朋友們熟悉的Mysql Clien??t的工具均可使用。
同時(shí),Palo支持JDBC、ODBC的編程接口,如果已有程序采用的是JDBC、OD(′?ω?`)BC,那么遷移成本幾ヾ(′ω`)?乎為零。最后看到它與業(yè)界主流的BI工具商業(yè)分析的工具對接的??,比如Tableau、Saiku、BI(′?`)EE、R。
最后再介紹機器學(xué)習云服務(wù)BML,BML中提供的深(shen)度學(xué)習技術(shù),曾獲得2014年百(???)度最高獎。BML提供端到端的解決方案,里面提供的算法均服務(wù)百度內部業(yè)務(wù)多年,典ヽ(′▽?zhuān)?ノ型如網(wǎng)頁(yè)搜索、百度推廣(鳳巢、網(wǎng)盟CTR預估等)、百度地圖、百度翻譯等。
使用開(kāi)放云BMR和BML??、Palo等,就可以立刻、直接享用與百度搜索同等品質(zhì)的大數據分析和挖掘服務(wù)!