自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

細(xì)數(shù)Google核心數(shù)據(jù)庫技術(shù)

數(shù)據(jù)庫 其他數(shù)據(jù)庫
在這里我們將細(xì)數(shù)Google的核心數(shù)據(jù)庫技術(shù),包括大規(guī)模數(shù)據(jù)處理,分布式數(shù)據(jù)庫技術(shù)和數(shù)據(jù)中心方案等等。

分布式大規(guī)模數(shù)據(jù)處理

MapReduce

首先,在Google數(shù)據(jù)中心會有大規(guī)模數(shù)據(jù)需要處理,比如被網(wǎng)絡(luò)爬蟲(Web Crawler)抓取的大量網(wǎng)頁等。由于這些數(shù)據(jù)很多都是PB級別,導(dǎo)致處理工作不得不盡可能的并行化,而Google為了解決這個問題,引入了 MapReduce這個編程模型,MapReduce是源自函數(shù)式語言,主要通過"Map(映射)"和"Reduce(化簡)"這兩個步驟來并行處理大規(guī)模的數(shù)據(jù)集。Map會先對由很多獨立元素組成的邏輯列表中的每一個元素進(jìn)行指定的操作,且原始列表不會被更改,會創(chuàng)建多個新的列表來保存Map的處理結(jié)果。也就意味著,Map操作是高度并行的。當(dāng)Map工作完成之后,系統(tǒng)會先對新生成的多個列表進(jìn)行清理(Shuffle)和排序,之后會這些新創(chuàng)建的列表進(jìn)行Reduce操作,也就是對一個列表中的元素根據(jù)Key值進(jìn)行適當(dāng)?shù)暮喜ⅰ?/p>

下圖為MapReduce的運行機制:

Map Reduce

圖2. MapReduce的運行機制(參[19])點擊查看大圖

接下來,將根據(jù)上圖來舉一個MapReduce的例子:比如,通過搜索Spider將海量的Web頁面抓取到本地的GFS 集群中,然后Index系統(tǒng)將會對這個GFS集群中多個數(shù)據(jù)Chunk進(jìn)行平行的Map處理,生成多個Key為URL,value為html頁面的鍵值對(Key-Value Map),接著系統(tǒng)會對這些剛生成的鍵值對進(jìn)行Shuffle(清理),之后系統(tǒng)會通過Reduce操作來根據(jù)相同的key值(也就是URL)合并這些鍵值對。

***,通過MapReduce這么簡單的編程模型,不僅能用于處理大規(guī)模數(shù)據(jù),而且能將很多繁瑣的細(xì)節(jié)隱藏起來,比如自動并行化,負(fù)載均衡和機器宕機處理等,這樣將極大地簡化程序員的開發(fā)工作。MapReduce可用于包括“分布grep,分布排序,web訪問日志分析,反向索引構(gòu)建,文檔聚類,機器學(xué)習(xí),基于統(tǒng)計的機器翻譯,生成Google的整個搜索的索引“等大規(guī)模數(shù)據(jù)處理工作。Yahoo也推出MapReduce的開源版本Hadoop,而且Hadoop在業(yè)界也已經(jīng)被大規(guī)模使用。

Sawzall

Sawzall可以被認(rèn)為是構(gòu)建在MapReduce之上的采用類似Java語法的DSL(Domain-Specific Language),也可以認(rèn)為它是分布式的AWK。它主要用于對大規(guī)模分布式數(shù)據(jù)進(jìn)行篩選和聚合等高級數(shù)據(jù)處理操作,在實現(xiàn)方面,是通過解釋器將其轉(zhuǎn)化為相對應(yīng)的MapReduce任務(wù)。除了Google的Sawzall之外,yahoo推出了相似的Pig語言,但其語法類似于SQL。

分布式數(shù)據(jù)庫技術(shù)

BigTable

由于在Google的數(shù)據(jù)中心存儲PB級以上的非關(guān)系型數(shù)據(jù)時候,比如網(wǎng)頁和地理數(shù)據(jù)等,為了更好地存儲和利用這些數(shù)據(jù),Google開發(fā)了一套數(shù)據(jù)庫系統(tǒng),名為“BigTable”。BigTable不是一個關(guān)系型的數(shù)據(jù)庫,它也不支持關(guān)聯(lián)(join)等高級SQL操作,取而代之的是多級映射的數(shù)據(jù)結(jié)構(gòu),并是一種面向大規(guī)模處理、容錯性強的自我管理系統(tǒng),擁有TB級的內(nèi)存和PB級的存儲能力,使用結(jié)構(gòu)化的文件來存儲數(shù)據(jù),并每秒可以處理數(shù)百萬的讀寫操作。

什么是多級映射的數(shù)據(jù)結(jié)構(gòu)呢?就是一個稀疏的,多維的,排序的Map,每個Cell由行關(guān)鍵字,列關(guān)鍵字和時間戳三維定位.Cell的內(nèi)容是一個不解釋的字符串,比如下表存儲每個網(wǎng)站的內(nèi)容與被其他網(wǎng)站的反向連接的文本。 反向的URL com.cnn.www是這行的關(guān)鍵字;contents列存儲網(wǎng)頁內(nèi)容,每個內(nèi)容有一個時間戳,因為有兩個反向連接,所以archor的Column Family有兩列:anchor: cnnsi.com和anchhor:my.look.ca。Column Family這個概念,使得表可以輕松地橫向擴展。下面是它具體的數(shù)據(jù)模型圖:

Big Table Data Model

圖3. BigTable數(shù)據(jù)模型圖(參[4])

在結(jié)構(gòu)上,首先,BigTable基于GFS分布式文件系統(tǒng)和Chubby分布式鎖服務(wù)。其次BigTable也分為兩部分:其一是Master節(jié)點,用來處理元數(shù)據(jù)相關(guān)的操作并支持負(fù)載均衡。其二是tablet節(jié)點,主要用于存儲數(shù)據(jù)庫的分片tablet,并提供相應(yīng)的數(shù)據(jù)訪問,同時tablet 是基于名為SSTable的格式,對壓縮有很好的支持。Big Table  Architecture

   圖4. BigTable架構(gòu)圖(參[15])

BigTable正在為Google六十多種產(chǎn)品和項目提供存儲和獲取結(jié)構(gòu)化數(shù)據(jù)的支撐平臺,其中包括有Google Print, Orkut,Google Maps,Google Earth和Blogger等,而且Google至少運行著500個BigTable集群。

隨著Google內(nèi)部服務(wù)對需求的不斷提高和技術(shù)的不斷地發(fā)展,導(dǎo)致原先的BigTable已經(jīng)無法滿足用戶的需求,而 Google也正在開發(fā)下一代BigTable,名為“Spanner(扳手)”,它主要有下面這些BigTable所無法支持的特性:

1.支持多種數(shù)據(jù)結(jié)構(gòu),比如table,familie,group和coprocessor

2.基于分層目錄和行的細(xì)粒度的復(fù)制和權(quán)限管理。

3.支持跨數(shù)據(jù)中心的強一致性和弱一致性控

4.基于Paxos算法的強一致性副本同步,并支持分布式事

5.提供許多自動化操作。

6.強大的擴展能力,能支持百萬臺服務(wù)器級別的集群。

7.用戶可以自定義諸如延遲和復(fù)制次數(shù)等重要參數(shù)以適應(yīng)不同的需求。

數(shù)據(jù)庫Sharding

Sharding就是分片的意思,雖然非關(guān)系型數(shù)據(jù)庫比如BigTable在Google的世界中占有非常重要的地位,但是面對傳統(tǒng)OLTP應(yīng)用,比如廣告系統(tǒng),Google還是采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫技術(shù),也就是MySQL,同時由于Google所需要面對流量非常巨大,所以Google在數(shù)據(jù)庫層采用了分片(Sharding)的水平擴展(Scale Out)解決方案,分片是在傳統(tǒng)垂直擴展(Scale Up)的分區(qū)模式上的一種提升,主要通過時間,范圍和面向服務(wù)等方式來將一個大型的數(shù)據(jù)庫分成多片,并且這些數(shù)據(jù)片可以跨越多個數(shù)據(jù)庫和服務(wù)器來實現(xiàn)水平擴展。

Google整套數(shù)據(jù)庫分片技術(shù)主要有下面這些優(yōu)點:

1.擴展性強:在Google生產(chǎn)環(huán)境中,已經(jīng)有支持上千臺服務(wù)器的MySQL分片集群。

2.吞吐量驚人:通過巨大的MySQL分片集群能滿足巨量的查詢請求。

3.全球備份:不僅在一個數(shù)據(jù)中心還是在全球的范圍,Google都會對MySQL的分片數(shù)據(jù)進(jìn)行備份,這樣不僅能保護(hù)數(shù)據(jù),而且方便擴展。

在實現(xiàn)方面,主要可分為兩塊:其一是在MySQL InnoDB基礎(chǔ)上添加了數(shù)據(jù)庫分片的技術(shù)。其二是在ORM層的Hibernate的基礎(chǔ)上也添加了相關(guān)的分片技術(shù),并支持虛擬分片(Virtual Shard)來便于開發(fā)和管理。同時Google也已經(jīng)將這兩方面的代碼提交給相關(guān)組織。

數(shù)據(jù)中心優(yōu)化技術(shù)

數(shù)據(jù)中心高溫化

大中型數(shù)據(jù)中心的PUE(Power Usage Effectiveness)普遍在2左右,也就是在服務(wù)器等計算設(shè)備上耗1度電,在空調(diào)等輔助設(shè)備上也要消耗一度電。對一些非常出色的數(shù)據(jù)中心,最多也就能達(dá)到1.7,但是Google通過一些有效的設(shè)計使部分?jǐn)?shù)據(jù)中心到達(dá)了業(yè)界領(lǐng)先的1.2,在這些設(shè)計當(dāng)中,其中最有特色的莫過于數(shù)據(jù)中心高溫化,也就是讓數(shù)據(jù)中心內(nèi)的計算設(shè)備運行在偏高的溫度下,Google的能源方面的總監(jiān)Erik Teetzel在談到這點的時候說:“普通的數(shù)據(jù)中心在70華氏度(21攝氏度)下面工作,而我們則推薦80華氏度(27攝氏度)“。但是在提高數(shù)據(jù)中心的溫度方面會有兩個常見的限制條件:其一是服務(wù)器設(shè)備的崩潰點,其二是精確的溫度控制。如果做好這兩點,數(shù)據(jù)中心就能夠在高溫下工作,因為假設(shè)數(shù)據(jù)中心的管理員能對數(shù)據(jù)中心的溫度進(jìn)行正負(fù)1/2度的調(diào)節(jié),這將使服務(wù)器設(shè)備能在崩潰點5度之內(nèi)工作,而不是常見的20度之內(nèi),這樣既經(jīng)濟,又安全。還有,業(yè)界傳言Intel為Google提供抗高溫設(shè)計的定制芯片,但云計算界的***專家James Hamilton認(rèn)為不太可能,因為雖然處理器也非常懼怕熱量,但是與內(nèi)存和硬盤相比還是強很多,所以處理器在抗高溫設(shè)計中并不是一個核心因素。同時他也非常支持使數(shù)據(jù)中心高溫化這個想法,而且期望將來數(shù)據(jù)中心甚至能運行在40攝氏度下,這樣不僅能節(jié)省空調(diào)方面的成本,而且對環(huán)境也很有利。

12V電池

由于傳統(tǒng)的UPS在資源方面比較浪費,所以Google在這方面另辟蹊徑,采用了給每臺服務(wù)器配一個專用的12V電池的做法來替換了常用的UPS,如果主電源系統(tǒng)出現(xiàn)故障,將由該電池負(fù)責(zé)對服務(wù)器供電。雖然大型UPS可以達(dá)到92%到95%的效率,但是比起內(nèi)置電池的 99.99%而言是非常捉襟見肘的,而且由于能量守恒的原因,導(dǎo)致那么未被UPS充分利用的電力會被轉(zhuǎn)化成熱能,這將導(dǎo)致用于空調(diào)的能耗相應(yīng)地攀升,從而走入一個惡性循環(huán)。同時在電源方面也有類似的“神來之筆”,普通的服務(wù)器電源會同時提供5V和12V的直流電。但是Google設(shè)計的服務(wù)器電源只輸出 12V直流電,必要的轉(zhuǎn)換在主板上進(jìn)行,雖然這種設(shè)計會使主板的成本增加1美元到2美元,但是它不僅能使電源能在接近其峰值容量的情況下運行,而且在銅線上傳輸電流時效率更高。

原文標(biāo)題:Google核心技術(shù)

鏈接:http://www.cnblogs.com/topcoderliu/archive/2010/08/13/1798619.html

【編輯推薦】

  1. 專家講解 Hadoop:HBASE松散數(shù)據(jù)存儲設(shè)計
  2. Hadoop創(chuàng)建Hbase表方法指導(dǎo)
  3. Hadoop集群與Hadoop性能優(yōu)化
  4. HadoopHBase實現(xiàn)配置簡單的單機環(huán)境
  5. 深入剖析Hadoop HBase
責(zé)任編輯:彭凡 來源: 博客園
相關(guān)推薦

2012-12-04 17:50:23

2022-06-20 09:17:02

數(shù)據(jù)查詢請求數(shù)據(jù)庫

2011-05-11 17:24:27

浪潮八路遵義銀行

2010-08-10 09:19:45

SNSMySQL

2015-11-02 15:46:26

云夢

2017-05-04 11:01:16

諸葛io數(shù)據(jù)分析

2012-08-10 09:44:06

2011-10-08 13:22:43

Google數(shù)據(jù)庫云計算

2022-06-10 17:37:37

數(shù)據(jù)庫

2011-10-09 10:58:48

云計算數(shù)據(jù)庫Google

2024-06-11 09:54:04

2023-11-13 16:58:40

數(shù)據(jù)庫系統(tǒng)

2013-07-30 12:29:19

Google App Google技術(shù)Engine

2011-11-29 09:54:20

Google進(jìn)化史

2019-01-16 14:20:42

2010-08-17 08:57:36

NoSQL微軟

2011-10-13 09:39:59

MySQL

2011-10-14 09:36:20

DNA數(shù)據(jù)庫

2017-12-26 14:59:08

數(shù)據(jù)中心數(shù)據(jù)流動數(shù)據(jù)

2011-04-13 13:45:04

數(shù)據(jù)庫虛擬化
點贊
收藏

51CTO技術(shù)棧公眾號