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


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

        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為基礎。三大基礎核心技術構建出了完整的分布式運算架構。

 

 

 

      2004年公布的 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年,啟發了無數的NoSQL數據庫,比如: Facebook的Cassandra、 Apache的Hadoop項目的子項目HBase、Google的LevelDB、 Facebook的RocksDB等等。Cassandra架構中有一半是模仿Bigtable,包括了數據模型、SSTables以及提前寫日志(另一半是模仿Amazon的Dynamo數據庫,使用點對點集群模式)。
      BigTable 是建立在 GFS 和 MapReduce 之上的。每個Table都是一個多維的稀疏圖。
     為了管理巨大的Table,把Table根據行分割,這些分割后的數據統稱為:Tablets。每個Tablets大概有 100-200 MB,每個機器存儲100個左右的 Tablets。底層的架構是:GFS。
      由於GFS是一種分布式的文件系統,采用Tablets的機制后,可以獲得很好的負載均衡。比如:可以把經常響應的表移動到其他空閑機器上,然后快速重建。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM