詳聊Google云計(jì)算的基礎(chǔ)架構(gòu) |
發(fā)布時(shí)間: 2012/9/15 16:27:43 |
GFS是 google自己設(shè)計(jì)的分布式文件系統(tǒng),是大量安裝有Linux操作系統(tǒng)的普通PC構(gòu)成的集群系統(tǒng)。整個(gè)集群系統(tǒng)由一臺(tái)Master(通常有幾臺(tái)備份)和若干臺(tái)TrunkServer構(gòu)成。GFS中文件備份成固定大小的Trunk分別存儲(chǔ)在不同的TrunkServer上,每個(gè)Trunk有多份拷貝,也存儲(chǔ)在不同的TrunkServer上。Master負(fù)責(zé)維護(hù)GFS中的 Metadata,即文件名及其Trunk信息?蛻(hù)端先從Master上得到文件的Metadata,根據(jù)要讀取的數(shù)據(jù)在文件中的位置與相應(yīng)的 TrunkServer通信。本文介紹Google云計(jì)算的基礎(chǔ)架構(gòu)。 據(jù)介紹,google的每一份數(shù)據(jù)至少放在三個(gè)不同位置的機(jī)器上,所以可靠性是可以高度保證的;而且操作GFS和操作本地磁盤(pán)一樣簡(jiǎn)單易行。 目前Google擁有超過(guò)200個(gè)的GFS集群,其中有些集群的計(jì)算機(jī)數(shù)量超過(guò)5000臺(tái)。Google現(xiàn)在擁有數(shù)以萬(wàn)計(jì)的連接池從GFS集群中獲取數(shù)據(jù),集群的數(shù)據(jù)存儲(chǔ)規(guī)?梢赃_(dá)到5個(gè)PB,并且集群中的數(shù)據(jù)讀寫(xiě)吞吐量可達(dá)到每秒40G。 MapReduce是一個(gè)編程模式,它是與處理/產(chǎn)生海量數(shù)據(jù)集的實(shí)現(xiàn)相關(guān)。用戶(hù)指定一個(gè)map函數(shù),通過(guò)這個(gè)map函數(shù)處理key/value(鍵/值)對(duì),并且產(chǎn)生一系列的中間key/value對(duì),并且使用reduce函數(shù)來(lái)合并所有的具有相同key值的中間鍵值對(duì)中的值部分。MapReduce的主要貢獻(xiàn)在于提供了一個(gè)簡(jiǎn)單強(qiáng)大的接口,通過(guò)這個(gè)接口,可以把大尺度的計(jì)算自動(dòng)的并發(fā)和分布執(zhí)行。 常見(jiàn)的應(yīng)用例子:在很大的文檔集合中通機(jī)每一個(gè)單詞出現(xiàn)的次數(shù).map函數(shù)檢查每一個(gè)單詞,并且對(duì)每一個(gè)單詞增加1到其對(duì)應(yīng)的計(jì)數(shù)器;reduce函數(shù)把特定單詞的所有出現(xiàn)的次數(shù)進(jìn)行合并。其他例子: URL訪(fǎng)問(wèn)頻率統(tǒng)計(jì):map函數(shù)處理webpag請(qǐng)求和應(yīng)答(URL,1)的log。Reduce函數(shù)把所有相同的URL的值合并,并且輸出一個(gè)成對(duì)的(URL,總個(gè)數(shù))。 逆向Web-Link,map函數(shù)輸出所有包含指向target URL的source網(wǎng)頁(yè),用(target,source)這樣的結(jié)構(gòu)對(duì)輸出。Reduce函數(shù)局和所有關(guān)聯(lián)相同target URL的source列表,并且輸出一個(gè)(target,list(source))這樣的結(jié)構(gòu)。 分布式排序:map函數(shù)從每條記錄中抽取關(guān)鍵字,并且產(chǎn)生(key,record)對(duì)。reduce函數(shù)原樣輸出所有的關(guān)鍵字對(duì)。 BigTable:一種用于管理超大規(guī)模結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng),可以管理分布在數(shù)以千計(jì)服務(wù)器上的以PB計(jì)的數(shù)據(jù)。Bigtable API將包括用于創(chuàng)建、編輯表和列,改變?nèi)杭⒈、列元?shù)據(jù)的函數(shù)。BT不支持完全的關(guān)系數(shù)據(jù)模型,而是為客戶(hù)提供了簡(jiǎn)單的數(shù)據(jù)模型,讓客戶(hù)來(lái)動(dòng)態(tài)控制數(shù)據(jù)的分布和格式。BT只能支持大部分SQL。 Google App Engine Google App Engine是一個(gè)開(kāi)發(fā)、托管網(wǎng)絡(luò)應(yīng)用程序的平臺(tái),使用Google管理的數(shù)據(jù)中心。它在2008年4月發(fā)布了第一個(gè)beta版本。Google App Engine使用了云計(jì)算技術(shù),它跨越多個(gè)服務(wù)器和數(shù)據(jù)中心來(lái)虛擬化應(yīng)用程序。當(dāng)前,Google App Engine支持的編程語(yǔ)言是Python和Java. http://appengine.google.com Hadoop Google的上述分布式框架很有創(chuàng)造性,而且有極大的擴(kuò)展性,使得Google在系統(tǒng)吞吐量上有很大的競(jìng)爭(zhēng)力,但是用C++寫(xiě)的。因此Apache基金會(huì)用Java實(shí)現(xiàn)了一個(gè)開(kāi)源版本hadoop,支持Fedora、Ubuntu等Linux平臺(tái)。以上介紹Google云計(jì)算的基礎(chǔ)架構(gòu)。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |