Google三大理論,引爆大數據時代(論文)

Google引爆大數據時代的三篇論文

談到Hadoop的起源,就不得不提Google的三駕馬車:Google FS、MapReduce、BigTable。雖然Google沒有公佈這三個產品的源碼,但是他發佈了這三個產品的詳細設計論文,奠定了風靡全球的大數據算法的基礎!

轉載:http://blog.songchunmin.com/686.html

一,GFS—-2003

2003年,Google發佈Google File System論文,這是一個可擴展的分佈式文件系統,用於大型的、分佈式的、對大量數據進行訪問的應用。它運行於廉價的普通硬件上,提供容錯功能。從根本上說:文件被分割成很多塊,使用冗餘的方式儲存於商用機器集羣上。

GFS由一個master和大量的chunkserver構成。Google設置一個master來保存目錄和索引信息,這是爲了簡化系統結果,提高性能來考慮的,但是這就會造成主成爲單點故障或者瓶頸。爲了消除主的單點故障Google把每個chunk設置的很大(64M),這樣,由於代碼訪問數據的本地性,application端和master的交互會減少,而主要數據流量都是Application和chunkserver之間的訪問。

另外,master所有信息都存儲在內存裏,啓動時信息從chunkserver中獲取。提高了master的性能和吞吐量,也有利於master當掉後,很容易把後備j機器切換成master。客戶端和chunkserver都不對文件數據單獨做緩存,只是用linux文件系統自己的緩存。

從上圖可以看出,Google的後面兩篇論文——MapReduce 和 BigTable都是以GFS爲基礎。三大基礎核心技術構建出了完整的分佈式運算架構。

二,MapReduce—-2004

緊隨其後的就是2004年公佈的 MapReduce論文,論文描述了大數據的分佈式計算方式,主要思想是將任務分解然後在多臺處理能力較弱的計算節點中同時處理,然後將結果合併從而完成大數據處理。

傳說中,Google使用它計算他們的搜索索引。而Mikio L. Braun認爲其工作模式應該是:Google把所有抓取的頁面都放置於他們的集羣上,然後每天使用MapReduce來重算。

Mapreduce是針對分佈式並行計算的一套編程模型。

講到並行計算,就不能不談到微軟的Herb Sutter在2005年發表的文章” The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software”,主要意思是通過提高cpu主頻的方式來提高程序的性能很快就要過去了,cpu的設計方向也主要是多核、超線程等併發上。但是以前的程序並不能自動的得到多核的好處,只有編寫併發程序,才能真正獲得多核的好處。分佈式計算也是一樣。

Mapreduce由Map和reduce組成,來自於Lisp,Map是影射,把指令分發到多個worker上去,reduce是規約,把Map的worker計算出來的結果合併。Mapreduce使用GFS存儲數據。


BigTable—-2006

Bigtable發佈於2006年,啓發了無數的NoSQL數據庫,比如:Cassandra、HBase等等。Cassandra架構中有一半是模仿Bigtable,包括了數據模型、SSTables以及提前寫日誌(另一半是模仿Amazon的Dynamo數據庫,使用點對點集羣模式)。

BigTable 是建立在 GFS 和 MapReduce 之上的。每個Table都是一個多維的稀疏圖

爲了管理巨大的Table,把Table根據行分割,這些分割後的數據統稱爲:Tablets。每個Tablets大概有 100-200 MB,每個機器存儲100個左右的 Tablets。底層的架構是:GFS。

由於GFS是一種分佈式的文件系統,採用Tablets的機制後,可以獲得很好的負載均衡。比如:可以把經常響應的表移動到其他空閒機器上,然後快速重建。

論文中英文版下載https://pan.baidu.com/s/1NYGlPJrAL40JsTorU9AI1w

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章