詳聊Google云計算的基礎架構
GFS是 google自己設計的分布式文件系統,是大量安裝有Linux操作系統的普通PC構成的集群系統。整個集群系統由一臺Master(通常有幾臺備份)和若干臺TrunkServer構成。GFS中文件備份成固定大小的Trunk分別存儲在不同的TrunkServer上,每個Trunk有多份拷貝,也存儲在不同的TrunkServer上。Master負責維護GFS中的 Metadata,即文件名及其Trunk信息??蛻舳讼葟腗aster上得到文件的Metadata,根據要讀取的數據在文件中的位置與相應的 TrunkServer通信。本文介紹Google云計算的基礎架構。
據介紹,google的每一份數據至少放在三個不同位置的機器上,所以可靠性是可以高度保證的;而且操作GFS和操作本地磁盤一樣簡單易行。
目前Google擁有超過200個的GFS集群,其中有些集群的計算機數量超過5000臺。Google現在擁有數以萬計的連接池從GFS集群中獲取數據,集群的數據存儲規??梢赃_到5個PB,并且集群中的數據讀寫吞吐量可達到每秒40G。
MapReduce是一個編程模式,它是與處理/產生海量數據集的實現相關。用戶指定一個map函數,通過這個map函數處理key/value(鍵/值)對,并且產生一系列的中間key/value對,并且使用reduce函數來合并所有的具有相同key值的中間鍵值對中的值部分。MapReduce的主要貢獻在于提供了一個簡單強大的接口,通過這個接口,可以把大尺度的計算自動的并發和分布執行。
常見的應用例子:在很大的文檔集合中通機每一個單詞出現的次數.map函數檢查每一個單詞,并且對每一個單詞增加1到其對應的計數器;reduce函數把特定單詞的所有出現的次數進行合并。其他例子:
URL訪問頻率統計:map函數處理webpag請求和應答(URL,1)的log。Reduce函數把所有相同的URL的值合并,并且輸出一個成對的(URL,總個數)。
逆向Web-Link,map函數輸出所有包含指向target URL的source網頁,用(target,source)這樣的結構對輸出。Reduce函數局和所有關聯相同target URL的source列表,并且輸出一個(target,list(source))這樣的結構。
分布式排序:map函數從每條記錄中抽取關鍵字,并且產生(key,record)對。reduce函數原樣輸出所有的關鍵字對。
BigTable:一種用于管理超大規模結構化數據的分布式存儲系統,可以管理分布在數以千計服務器上的以PB計的數據。Bigtable API將包括用于創建、編輯表和列,改變群集、表、列元數據的函數。BT不支持完全的關系數據模型,而是為客戶提供了簡單的數據模型,讓客戶來動態控制數據的分布和格式。BT只能支持大部分SQL。
Google App Engine
Google App Engine是一個開發、托管網絡應用程序的平臺,使用Google管理的數據中心。它在2008年4月發布了***個beta版本。Google App Engine使用了云計算技術,它跨越多個服務器和數據中心來虛擬化應用程序。當前,Google App Engine支持的編程語言是Python和Java. http://appengine.google.com
Hadoop
◆Hadoop(http://hadoop.apache.org)是apache下面的一個分布式并行計算框架,是從lunece中抽取出來的一個框架。Hadoop主要是由HDFS、MapReduce和Hbase組成。
◆HDFS是Google File System(GFS)的開源實現。
◆MapReduce是Google MapReduce的開源實現。
◆HBase是Google BigTable的開源實現
Google的上述分布式框架很有創造性,而且有極大的擴展性,使得Google在系統吞吐量上有很大的競爭力,但是用C++寫的。因此Apache基金會用Java實現了一個開源版本hadoop,支持Fedora、Ubuntu等Linux平臺。以上介紹Google云計算的基礎架構。
【編輯推薦】