南通颐猩文化传播有限公司

當前位置:首頁 >  站長 >  建站經(jīng)驗 >  正文

解析百度開放云分布式計算平臺對大數(shù)據(jù)的處理

 2022-03-28 14:04  來源: 網(wǎng)絡綜合   我來投稿 撤稿糾錯

  域名預訂/競價,好“米”不錯過

百度開放云總經(jīng)理劉旸看來,當今世界正面臨著由技術突破帶來的全行業(yè)升級,在這場商業(yè)劇變中,背后是三個重要的「重新定義」:第一,云計算重新定義了「IT」。它改變了企業(yè)所需要的 IT 資源的擁有與供給的方式,基于互聯(lián)網(wǎng)級的資源管理平臺,徹底改變了傳統(tǒng)企業(yè)的 IT 模式,為新的商業(yè)創(chuàng)新提供了可能;

第二,大數(shù)據(jù)重定義了「資產」,相較于以往的重資產,企業(yè)在經(jīng)營中不斷生成的數(shù)據(jù),將成為企業(yè)未來繼續(xù)生存并保持競爭力的砝碼;第三,人工智能重定義了「效率」,通過語音、圖像、視頻、自然語言識別和智能處理等技術,讓傳統(tǒng)的計算機具備更為強大的能力,大幅提升工作效率。

基于以上三個重新定義,百度開放云的重新堆棧也分為三層:云計算層、大數(shù)據(jù)應用層、和人工智能層。

處理大數(shù)據(jù)無非以下四個步驟:

收集:原始數(shù)據(jù)種類多樣,格式、位置、存儲、時效性等迥異。數(shù)據(jù)收集從異構數(shù)據(jù)源中收集數(shù)據(jù)并轉換成相應的格式方便處理。

存儲:收集好的數(shù)據(jù)需要根據(jù)成本、格式、查詢、業(yè)務邏輯等需求,存放在合適的存儲中,方便進一步的分析。

變形:原始數(shù)據(jù)需要變形與增強之后才適合分析,比如網(wǎng)頁日志中把IP地址替換成省市、傳感器數(shù)據(jù)的糾錯、用戶行為統(tǒng)計等。

分析:通過整理好的數(shù)據(jù)分析what happened、why it happened、what is happening和what will happen,幫助企業(yè)決策。

其實,如果涉及到“大數(shù)據(jù)”,不得不提百度最大的業(yè)務——搜索。百度搜索已經(jīng)收錄全世界超過一萬億的網(wǎng)頁,每天響應中國網(wǎng)民大約幾十億次的請求。除此之外,百度還有另外20多個用戶過億的產品線,而且各個產品底層的大規(guī)模數(shù)據(jù)處理,都需要使用百度團隊維護的大數(shù)據(jù)處理平臺。

百度分布式計算平臺:離線引擎優(yōu)化

關于MapReduce

首先介紹主要的離線計算模型——MapReduce,百度從2007年開始引進Hadoop 0.15.1,隨后快速發(fā)展,2011年百度的MR單集群規(guī)模達到5000臺,到2013年已經(jīng)多達1.3萬臺,這也是截止到目前為止全世界最大的單集群。Hadoop全集群規(guī)模為10萬量級, 作業(yè)量達到了百萬量級,日均CPU利用率超過80%,遠超業(yè)界同行,百度開放云(http://cloud.baidu.com)底層依賴的大規(guī)模集群調度、資源隔離等技術能力世界領先。除了在規(guī)模方面不斷擴大,百度一直在Hadoop性能分析方面進行了大量的優(yōu)化。2013年的測試結果顯示,百度內部MR實現(xiàn)相比于開源Hadoop性能提升30%。典型優(yōu)化,例如Hadoop中的Shuffle,百度將其做成一個統(tǒng)一的shuffle服務,不再占用Map或Reduce槽位。比如對關鍵熱點函數(shù)采用SSE向量化等。

2014年,百度繼續(xù)對計算引擎做了大幅優(yōu)化, Native C++實現(xiàn)的DAG引擎正式上線。下圖是一個 4輪MR Job實現(xiàn)的典型業(yè)務流示例,DAG引擎上線后,可以優(yōu)化成一個DAG作業(yè),可以避免3次Reduce寫多副本引入的磁盤IO及網(wǎng)絡IO,還可以規(guī)避2次Map讀HDFS的IO以及處理耗費。

下圖是一個真實業(yè)務由SQL計算表示層翻譯下來的,基于MR引擎時,SQL會翻譯成25個MR JOB,如果百度把它優(yōu)化成DAG,能夠避免很多次磁盤IO操作。在優(yōu)化之后,運行時間直接縮減到1個小時,優(yōu)化前后的差異非常顯著。

內存流式Shuffle

2014年,百度對Shuffle進行重大重構,初期實習生同學完成的Demo以BaiduSort名義參與了2014年Sort BenchMark大數(shù)據(jù)排序國際大賽,并獲得冠軍(2015年百度沒再參加,國內其他公司以同樣技術通過更大規(guī)模集群刷新記錄)。2015年,新Shuffle技術完成全面上線。Hadoop默認Shuffle實現(xiàn)為基于磁盤Pull模式,計算過程顯式分成Map、Shuffle、Reduce過程;Baidu研發(fā)的新Shuffle采用內存流式Push模式,Map端完成部分記錄處理后直接從內存中將計算結果推送給下游。

舉例來說,Map處理256MB輸入數(shù)據(jù),在內存流式Shuffle模式下,處理完100條記錄以后,直接通過內存推送到下游,這樣就形成流水線方式處理。不再有顯式的Shuffle階段。

目前,該Shuffle組件為通用組件,正逐步推廣到其他分布式計算平臺中。

百度分布式計算平臺:系統(tǒng)架構演進

前面重點介紹了百度開放云BMR服務中涉及到的規(guī)模、性能方面優(yōu)化思路和效果,接下來跟大家一起分享一下,百度遇到的整體架構方面挑戰(zhàn)以及優(yōu)化思路。

2012年系統(tǒng)架構中,最主要的兩個離線計算平臺,左邊是以MapReduce模型為主的批量計算平臺BMR,右邊是MPI /BSP模型為主的大規(guī)模機器學習平臺BML。從最下面可以看到,MapReduce和MPI模型底層硬件就有較大差異。Hadoop分布式文件系統(tǒng)多副本以及強大的故障處理機制,使得Raid卡完全沒有必要,采用多塊超大容量SATA硬盤非常適合。

而MPI差別較大,MPI是一個消息傳輸框架,它在設計之初就沒有考慮太多異常處理,因此它對底層系統(tǒng)可靠性要求非常高。百度采用了非常高配置的服務器,例如帶Raid卡的sas硬盤,超大內存、萬兆互聯(lián)等。

BMR Hadoop由大量SATA硬盤的服務器構成,存儲系統(tǒng)為HDFS,資源調度層面百度有自研的調度器ARK(與社區(qū)Yarn比較類似)。而BML大規(guī)模機器學習平臺上,支持的業(yè)務樣本超過數(shù)百億計量級,特征規(guī)模也遠超百億。百度在運行機器學習時,需要先啟動MapReduce,然后再將數(shù)據(jù)從HDFS分發(fā)到各個MPI節(jié)點,這種方式對網(wǎng)絡帶寬的要求很高。

系統(tǒng)部同事持續(xù)改進內網(wǎng)帶寬的同時,BML平臺層面也在思考應該如何解決跨MR和MPI倆大集群間的日益嚴重的網(wǎng)絡帶寬問題。

另外還有一個需求:MPI是一種事務性調度模型,比如一個業(yè)務需要200臺機器,如果平臺此時只有199臺機器空閑,實際也很難用起來(除非修改提交參數(shù),但涉及輸入數(shù)據(jù)重新分塊處理等比較復雜)。另外MPI計算往往顯式分為計算、傳輸、計算等階段(即BSP模型),因此資源利用波動性較大,例如CPU計算階段,網(wǎng)絡空閑;網(wǎng)絡傳輸或全局同步階段,CPU空閑。為解決這個問題,百度在MPI集群中引入IDLE計算,IDLE業(yè)務資源占用充分可控,典型的IDLE任務如MapReduce任務,而執(zhí)行MR任務又會進一步加劇MR集群和MPI集群間網(wǎng)絡帶寬問題。

基于以上考慮,百度正式將MPI底層硬件替換為替換成高配置存儲型服務器,硬盤同構,文件系統(tǒng)都采用HDFS,BML算法輸入和輸出均通過HDFS,不再是本地文件系統(tǒng)。

BML機器學習執(zhí)行引擎層面,百度基于MPI封裝了DVCE(Distributed VectorComputingEngine)分布式向量計算引擎,屏蔽MPI過于低層的編程接口,通過高層抽象自動翻譯為MPI任務,這就是百度第二代專門針對“并行計算”開發(fā)的系統(tǒng)框架。

2014年,BML機器學習執(zhí)行引擎遷移到ELF第三代并行計算框架, ELF采用ParameterServer架構,大幅降低機器學習算法開發(fā)代價,對比于百度的第二代框架DVCE,在開發(fā)效率方面有大幅度的提升。離線計算方面,完成了Native C++ DAG引擎上線,百度內部叫DCE(Distributed ComputingEngine)。

2014年BMR和BML底層都采用Matrix完成資源分配與隔離,其他平臺如小批量計算系統(tǒng)TaskManager和毫秒級計算延遲的Dstream系統(tǒng),都基于業(yè)務需求特殊性,采用獨立的資源隔離和調度系統(tǒng)。

2015年的架構改進,主要是將所有的計算模型均遷移到Matrix+Normandy架構。Normandy兼容社區(qū)Yarn調度接口,開源社區(qū)新型興計算平臺可以很輕松的接入到百度的計算生態(tài)里。

百度已經(jīng)介紹了百度大數(shù)據(jù)分析和挖掘平臺主要的底層引擎和架構,接下來談一下最新思考。

系統(tǒng)底層是IDC硬件,接著是Matrix,再是Normandy,然后是幾個主要的引擎。之前介紹底層架構的統(tǒng)一,比如在硬件、調度、存儲等方面的統(tǒng)一。實際上各個系統(tǒng)對外的結果,都有自己的接口,如果要使用MR,很多人寫MR程序都是直接調用Hadoop原生接口,配置涉及到的多個參數(shù)。部分業(yè)務還需要流式系統(tǒng)完成日志清洗,在經(jīng)過MapReduce模型批量預處理,隨后通過ELF完成機器學習模型訓練,最后再通過MapReduce模型完成模型評估,可見一個業(yè)務需要跨越多個模型,需要業(yè)務線同學同時熟悉很多模型和平臺,而每一個模型又有各自特點和接口。只有足夠了解模型的細節(jié)和接口后,才能真正的利用好該模型。

于是百度正式立項BigFlow項目(原項目名DataFlow,圖片未來及修改),將模型的細節(jié)屏蔽。平臺自動決定選擇合適的并發(fā)度,甚至智能選擇應該把這個翻譯到哪個計算模型。BigFlow可以支持多個不同的計算引擎(每個引擎在其適合的領域做到極致),充分發(fā)揮各引擎性能和功能。所以用戶使用同一套接口,便能對應到不同的任務。由于采用高層抽象,業(yè)務開發(fā)效率獲得大幅提升,代碼量大幅減少,其維護成本也大幅降低。BigFlow集成常見優(yōu)化手段,因此將大幅提升平臺有效資源占用。

百度開放云——大數(shù)據(jù)+智能

最后,向大家簡要介紹百度開放云。2014年,百度正式?jīng)Q定將服務內部業(yè)務多年的云計算技術正式對外提供服務,即百度開放云,對應官網(wǎng)http://cloud.baidu.com。百度開放云大數(shù)據(jù)方面,BMR已經(jīng)對外開放,而更多的大數(shù)據(jù)分析和服務都還未對外開放。BMR集群上可以做到按需部署,用戶專享,更關鍵的是完全兼容開源的Hadoop/Spark平臺,開放云客戶基于Hadoop、Spark、Hbase等已經(jīng)實現(xiàn)的大數(shù)據(jù)業(yè)務幾乎不用修改就可以平滑遷移到云上。多維分析服務Palo,它完全兼容MySQL網(wǎng)絡協(xié)議,因此,客戶朋友們熟悉的Mysql Client的工具均可使用。

同時,Palo支持JDBC、ODBC的編程接口,如果已有程序采用的是JDBC、ODBC,那么遷移成本幾乎為零。最后看到它與業(yè)界主流的BI工具商業(yè)分析的工具對接的,比如Tableau、Saiku、BIEE、R。

最后再介紹機器學習云服務BML,BML中提供的深度學習技術,曾獲得2014年百度最高獎。BML提供端到端的解決方案,里面提供的算法均服務百度內部業(yè)務多年,典型如網(wǎng)頁搜索、百度推廣(鳳巢、網(wǎng)盟CTR預估等)、百度地圖、百度翻譯等。

使用開放云BMR和BML、Palo等,就可以立刻、直接享用與百度搜索同等品質的大數(shù)據(jù)分析和挖掘服務!

申請創(chuàng)業(yè)報道,分享創(chuàng)業(yè)好點子。點擊此處,共同探討創(chuàng)業(yè)新機遇!

相關標簽
百度云

相關文章

熱門排行

信息推薦