Google這個(gè)搜索巨人很少暴露其數(shù)據(jù)中心,但在上周,Google研究員Jeff Dean在Google I/O會(huì)議上揭秘了它的部分運(yùn)行情況。
一方面,Google使用了一些常規(guī)服務(wù)器,另外一方面,Google將1800臺(tái)服務(wù)器組成了集群,這些集群服務(wù)器負(fù)責(zé)Google日常的搜索處理任務(wù),這部分服務(wù)器的數(shù)量大約是700到1000臺(tái)。 Google并未透露擁有多少臺(tái)服務(wù)器,但我們估計(jì)的數(shù)量有成千上萬(wàn)。Dean透露,Google將40臺(tái)服務(wù)器編為一個(gè)集群,而在全球范圍, Google擁有36個(gè)數(shù)據(jù)中心。每個(gè)數(shù)據(jù)中心有150個(gè)服務(wù)器集群,這意味著Google擁有的服務(wù)器數(shù)量超過(guò)20萬(wàn)臺(tái),不過(guò)Google服務(wù)器的數(shù)量應(yīng)該遠(yuǎn)遠(yuǎn)超過(guò)這一數(shù)字,而且每天都在增長(zhǎng)。 無(wú)論有多少臺(tái)服務(wù)器,Google取得的成就都引人矚目。像紐約證券交易所和航空公司訂票系統(tǒng)都使用大量的主干機(jī)服務(wù)器與軟件,而Google主要使用自己的技術(shù)。 可以肯定,許多服務(wù)器廠商對(duì)此會(huì)感到酸溜溜的,但Google明顯認(rèn)為,將自己的技術(shù)命運(yùn)掌握在自己手中最安全。Google搜索產(chǎn)品與用戶體驗(yàn)部門(mén)副總裁Marissa Mayer說(shuō),創(chuàng)始人Larry Page鼓勵(lì)在公司中形成一種“健康的,對(duì)不可能說(shuō)不”的氣氛。 為了應(yīng)對(duì)Google這樣的搜索規(guī)模,需要讓每臺(tái)機(jī)器的性能發(fā)揮到極致。雖然服務(wù)器廠商們對(duì)其高端機(jī)型中的容錯(cuò)性能津津樂(lè)道,但Google更樂(lè)意將錢(qián)投到容錯(cuò)軟件上。 Dean說(shuō):“我們的觀點(diǎn)是,不可靠的硬件數(shù)量最好是可靠機(jī)型的兩倍。你需要將可靠性放在軟件層面。假如你運(yùn)行1萬(wàn)臺(tái)機(jī)器,那么每天都有一些死機(jī)。” Dean說(shuō),在每個(gè)服務(wù)器集群運(yùn)行的頭一年,一般有1千臺(tái)機(jī)器會(huì)發(fā)生故障;數(shù)千塊硬盤(pán)會(huì)出問(wèn)題;一個(gè)“電源分配單元”(PDU)將壞掉,令 500到1000臺(tái)機(jī)器當(dāng)機(jī)6小時(shí);20個(gè)服務(wù)器機(jī)架將出現(xiàn)故障,造成40到80臺(tái)機(jī)器從網(wǎng)絡(luò)上掉線;5個(gè)服務(wù)器機(jī)架將變得不穩(wěn)定,這使得機(jī)架上的服務(wù)器處理的一半信息包失去響應(yīng);一個(gè)服務(wù)器集群需要重新連接,這將影響5%的機(jī)器,影響的時(shí)間跨度一般為2天。服務(wù)器集群有50%的過(guò)熱可能性,過(guò)熱會(huì)讓絕大多數(shù)服務(wù)器在5分鐘內(nèi)當(dāng)機(jī),并且耗時(shí)1到2天來(lái)重新恢復(fù)。 雖然Google使用了一般的硬件設(shè)備,但在軟件上卻沒(méi)有使用尋常的軟件。Google要求英特爾提供專門(mén)定制的電路板。Dean還透露,Google目前為每40個(gè)服務(wù)器組成的機(jī)架配備一個(gè)機(jī)箱,而不是象一般情況那樣為每個(gè)服務(wù)器配備一個(gè)機(jī)箱。 對(duì)于服務(wù)器本身,Google喜歡多核芯片配置。盡管許多軟件公司正在努力適應(yīng)多核芯片時(shí)代的來(lái)臨,但Google對(duì)這種芯片使用起來(lái)得心應(yīng)手。Google不得不讓自己的技術(shù)適應(yīng)有限的硬件資源架構(gòu),因此,他們已經(jīng)進(jìn)入了并行處理時(shí)代。 Dean說(shuō):“我們確實(shí)喜歡多核機(jī)器。對(duì)我們來(lái)說(shuō),多核機(jī)器用少量的機(jī)器實(shí)現(xiàn)了良好的連接性能。對(duì)我們而言,它們更容易使用。” 盡管Google需要對(duì)搜索以及其它服務(wù)進(jìn)行快速響應(yīng),并行處理能夠完成這一任務(wù)需要,雖然有可能單個(gè)線程的速度并不快。 Dean說(shuō):“單個(gè)線程的性能對(duì)我們來(lái)說(shuō)確實(shí)沒(méi)有多大關(guān)系。我們將重點(diǎn)主要放在并行處理問(wèn)題上。” Google如何讓這些普通的硬件發(fā)揮作用?用軟件。 Dean闡述了Google軟件的三大核心元素:Google文件系統(tǒng)(GFS);Google大表(BigTable:是Google一種對(duì)于半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行分布存儲(chǔ)與訪問(wèn)的接口或服務(wù));MapReduce算法(它是Google開(kāi)發(fā)的C++編程工具,用于大于1TB數(shù)據(jù)的大規(guī)模數(shù)據(jù)集并行運(yùn)算)。盡管Google依靠許多開(kāi)源項(xiàng)目實(shí)現(xiàn)了企業(yè)的騰飛,但Google對(duì)這三套核心元素秘而不宣。 Google文件系統(tǒng)處于這三個(gè)元素的最底層,它負(fù)責(zé)許多服務(wù)器,機(jī)器的數(shù)據(jù)存儲(chǔ)工作。很多Google文件系統(tǒng)的體積都異常龐大,有好幾個(gè)petabyte規(guī)模(1 petabyte相當(dāng)于1百萬(wàn)gigabytes)。有200多個(gè)服務(wù)器集群運(yùn)行有Google文件系統(tǒng),其中很多集群包含了上千臺(tái)機(jī)器。 Google文件系統(tǒng)至少在三臺(tái)名為“塊服務(wù)器”(chunkservers)上存儲(chǔ)大體積數(shù)據(jù)(一般為64MB);如果一臺(tái)塊服務(wù)器發(fā)生故障,那么主服務(wù)器會(huì)負(fù)責(zé)將數(shù)據(jù)恢復(fù)到新的區(qū)域。Dean說(shuō):“至少在存儲(chǔ)層面,機(jī)器故障的處理由Google文件系統(tǒng)來(lái)完成。” 為了給全部這些數(shù)據(jù)提供一些結(jié)構(gòu),Google使用了大表。象甲骨文和IBM公司的商業(yè)數(shù)據(jù)庫(kù)在這里發(fā)揮不了作用,因?yàn)檫@些產(chǎn)品無(wú)法滿足Google的需要,Dean說(shuō),如果要使用商業(yè)數(shù)據(jù)庫(kù)的話,價(jià)格將非常的昂貴。 Google從2004年開(kāi)始設(shè)計(jì)大表,現(xiàn)在已經(jīng)在Google 70多個(gè)項(xiàng)目中使用,包括Google地圖,Google地球,Blogger,Google Print和核心的搜索目錄。Dean說(shuō),大表管理的最大一個(gè)數(shù)據(jù)表格有6 petabytes大小,覆蓋上千臺(tái)機(jī)器。 2003年,Google編寫(xiě)了MapReduce的第一個(gè)版本,這種算法給了Google公司一條讓自己數(shù)據(jù)發(fā)揮作用的途徑來(lái)。例如, MapReduce能夠找出一個(gè)詞語(yǔ)在Google搜索目錄中出現(xiàn)的次數(shù);一系列網(wǎng)頁(yè)中特定詞語(yǔ)出現(xiàn)的頻率;鏈接到某個(gè)特定網(wǎng)站的所有網(wǎng)站數(shù)量等。 有了MapReduce,Google可以編寫(xiě)出一個(gè)索引目錄,迅速顯示出與特定詞語(yǔ)相關(guān)的網(wǎng)頁(yè)出來(lái)。Dean說(shuō):“為了在可以接受的時(shí)間內(nèi)完成這一工作,你需要在上千臺(tái)機(jī)器上進(jìn)行處理。” Google對(duì)MapReduce軟件的使用正在增多。2004年,MapReduce運(yùn)行了2.9萬(wàn)個(gè)工作任務(wù),到2007年,已有220萬(wàn)個(gè)工作由MapReduce來(lái)完成。同期,MapReduce對(duì)于一個(gè)工作的平均運(yùn)行響應(yīng)時(shí)間從634秒下降到了395秒,MapReduce任務(wù)的數(shù)據(jù)產(chǎn)出量從193 terabytes上升到了14018 terabytes。 Dean說(shuō),在任何一天,Google運(yùn)行有大約10萬(wàn)個(gè)MapReduce工作任務(wù);每項(xiàng)任務(wù)大約會(huì)占用4百臺(tái)服務(wù)器,時(shí)間大約是5到10分鐘。 這是一個(gè)有趣的數(shù)學(xué)計(jì)算。假設(shè)服務(wù)器只完成MapReduce工作,每臺(tái)服務(wù)器一次只完成一項(xiàng)任務(wù),那么大約要耗時(shí)24小時(shí),如果這些工作任務(wù)每個(gè)耗時(shí)5分鐘,這意味著MapReduce任務(wù)要占用大約13.9萬(wàn)臺(tái)服務(wù)器。如果耗時(shí)7.5分鐘,那么需要的服務(wù)器數(shù)量增加到20.8萬(wàn)臺(tái);如果需要 10分鐘,服務(wù)器的數(shù)量增加至27.8萬(wàn)臺(tái)。 和Google文件系統(tǒng)一樣,MapReduce的設(shè)計(jì)也要考慮服務(wù)器的當(dāng)機(jī)問(wèn)題。 Dean說(shuō):“當(dāng)一臺(tái)機(jī)器當(dāng)機(jī),主服務(wù)器會(huì)了解分配給這臺(tái)機(jī)器的任務(wù)是什么,然后直接指定其它機(jī)器來(lái)完成這一任務(wù)。” MapReduce的可靠性曾經(jīng)在一個(gè)由1800臺(tái)服務(wù)器組成的集群進(jìn)行維護(hù)時(shí)經(jīng)受住了嚴(yán)格考驗(yàn)。工作人員將其中80臺(tái)機(jī)器拔掉,其它1720臺(tái)機(jī)器承擔(dān)起了80臺(tái)機(jī)器的處理任務(wù)。Dean說(shuō):“它運(yùn)行有一些慢,但全部完成了任務(wù)。” 在2004年,Dean表示,曾經(jīng)有一個(gè)1800臺(tái)機(jī)器組成集群,其中1600臺(tái)當(dāng)機(jī)了,但整個(gè)系統(tǒng)經(jīng)受住了考驗(yàn)。 盡管Google的數(shù)據(jù)中心取得了很大的成功,但公司并不滿足,他們有很長(zhǎng)遠(yuǎn)的改進(jìn)發(fā)展計(jì)劃。 對(duì)于一般的企業(yè)來(lái)說(shuō),他們只需要考慮將工作任務(wù)從一臺(tái)服務(wù)器轉(zhuǎn)移到另外一臺(tái),但Google面臨的工作量級(jí)不同,他們希望能夠?qū)⒐ぷ魅蝿?wù)由一個(gè)數(shù)據(jù)中心自動(dòng)轉(zhuǎn)移到另外一個(gè)中心。 Dean說(shuō):“我們希望自己的下一代架構(gòu)是一種能夠超越單個(gè)機(jī)器的系統(tǒng)。” 考慮到Google的業(yè)務(wù)數(shù)量級(jí),這無(wú)疑是一個(gè)艱巨的挑戰(zhàn)。毫無(wú)疑問(wèn),很多小公司正在羨慕的看著他們。 |
|
來(lái)自: marksz > 《社會(huì)經(jīng)濟(jì)》