谷歌大數據的三駕馬車


谷歌划時代的三篇大數據論文

2003年的Google File System、2004年的Google MapReduce、2006年的Google Bigtable。

 

本次仔細閱讀了Google公司的三篇重要的論文分別為《Google File System》、《Google Bigtable》和《Google MapReduce》,讓我對分布式系統和大體量數據的存儲有了新的認識和理解,下面我主要以三篇論文的主要內容做一個總結以及自己的一些理解和體會。

1 《Google File System》

       這篇文章主要講的是Google的GFS文件系統,一個面向大規模數據密集型應用的、可伸縮的分布式文件系統。它與傳統的分布式系統有着很多相同的設計目標,比如,性能、可伸縮性以及可用性,並且它還考慮了負載均衡問題和技術環境的影響。設計思路:組件失效是常態事件,由於其系統是由幾百甚至幾千台普通廉價設備組裝而成的存儲機器,因此在使用過程中難免會出現各種各樣的問題。文件巨大,以TB為數量級的數據的存儲。大多數文件采用文件尾部追加數據而不是覆蓋原有數據。應用程序和文件系統API的協同設計提高了整個系統的靈活性。由於放松了GFS的一致性的要求,簡化了GFS的設計,提高了系統的靈活性。
中間部分主要講的是GFS文件系統的設計階段,涉及到它要達到的預期效果 、接口的設計、架構設計、節點設計、元數據的結構與存儲等主要的設計過程。過程中還包含了操作日志的記錄與查看以及GFS文件系統為了達到它支持的一致性而設計的一些機制規則,比如有一致性保障機制、程序實現。在系統交互方面,它的原則就是最小化所有操作和Master節點的交互。那他使用的規則就是租賃和變更順序、數據流、原子記錄追加和快照,旨在數據更好地交互與調用。再一個講的比較多的就是Master節點的操作,它執行所有的名字空間操作,管理整個系統里所有Chunk副本,Chunk副本有三個用途,分別是Chunk創建、重新復制和重新負載均衡。在垃圾回收方面,GFS文件刪除不會立刻回收可用的物理空間,它是采用惰性回收的策略。對過期失效的Chunk副本GFS也能很好地檢測,因為Master節點保存了每個Chunk的版本號,根據版本號可以區分當前副本和過期版本。
最后來看看GFS的容錯機制和它的性能方面展示以及它的經驗教訓。GFS所面臨的挑戰是如何處理頻繁發生的組件失效,可能的解決方法就是利用GFS自帶的工具診斷系統的故障,比如說它輸出的詳盡的、深入的診斷日志。GFS所要達到的目標就是高可用性、數據完整性。在測試基准性能方面,Google主要使用自己的例子來說明GFS的讀寫速度和Master服務器的負載均衡,在服務器出現錯誤時,它可以迅速恢復運作的能力。經驗和相關工作方面主要是寫在做GFS時遇到一些問題以及自己尋求的解決方法和方案。

2 《Google Bigtable》

        這篇論文主要介紹的是Google的Bigtable,它是一個分布式的結構化數據存儲系統,用來處理海量數據,通常是PB級的數據。它的目標是適用性廣泛、可擴展、高性能和高可用性。后面就是介紹它的一些組成和它的數據模型,首先可以看到數據模型,Bigtable是一個稀疏的、分布式的、持久化存儲的多維度排序Map,而Map的是行關鍵字、列關鍵字以及時間戳。Bigtable還提供了API函數用來修改集群、表和列族的元數據。它的構件是建立在幾個Google基礎構件上的,它使用的是Google的分布式系統GFS,來存儲日志文件和數據文件。其中還介紹了Bigtable依賴的一個高可用、序列化的分布式鎖服務組件,叫做Chubby。Bigtable主要包括三個組件:鏈接到客戶端程序中的庫、一個master服務器和多個Tablet服務器。根據任務的變化情況,它還可以動態的向集群中添加Tablet服務器。並且Google使用一個三層的、類似B+樹的結構存儲Tablet的位置信息,位置信息不超過三層。比如有Tablet分配指的是一個Tablet只能分配給一個Tablet服務器。文章中還對Tablet服務和它的內存空間回收機制做了詳細的說明
上面主要講的是Google Bigtable的實現構件以及它底層的框架,這一段主要講講它的優化工作以及一些性能數據。首先說的是優化方面所做的努力,(1)它使用了一個局部性群組,也就是客戶端程序可以將多個列族組合成一個局部性群組,對Tablet中的每一個局部性群組都會產生一個單獨的SSTable,將通常不會一起訪問的列族分割成不同的局部性群組可以提高讀取操作的效率。(2)使用了壓縮的技術,客戶程序可以控制一個局部性群組的SSTable是否需要壓縮,當然通過壓縮可以減少存儲空間,而且沒有影響讀取的速度。(3)使用緩存來提高讀操作的性能,Tablet 服務器使用二級緩存的策略。掃描緩存是第一級緩存,主要緩存 Tablet服務器通過 SSTable 接口獲取的 Key Value 對;Block 緩存是二級緩存,緩存的是從 GFS 讀取的 SSTable 的Block。技術的話,比如使用了Bloom過濾器、實現Commit日志、恢復提速、不變性。其次在性能評估方面,為了測試Bigtable的性能和可擴展性,Google建立了一個包括N台Tablet服務器的Bigtable集群,並且它的台數是可變的。Bigtable正是通過服務器台數的增加來實現系統整體吞吐量的增長,並且這種增跨越式的。
最后說說Bigtable的實際應用方面。(1)Google Analytics,用來幫助Web站點的管理員分析他們網站的流量模式的服務,提供了整體狀況的統計數據。(2)Google Earth,Google通過一組服務為用戶提供了高分辨率的地球表面衛星圖像,訪問方式可以是基於Web的Google Maps訪問接口,也可以是通過Google Earth制定的客戶端軟件訪問。(3)個性化查詢,是一個雙向服務,這個服務記錄用戶的查詢和點擊,涉及到各種Google 的服務,比如 Web 查詢、圖像和新聞。用戶可以瀏覽他們查詢的歷史,重復他們之前的查詢和點擊;用戶也可以定制基於 Google 歷史使用習慣模式的個性化查詢結果。在經驗教訓和相關工作方面,主要講的是Google在做Bigtable時遇到的一些問題和解決方案。

3 《Google MapReduce》

        本篇論文主要介紹的是Google的MapReduce編程模型,MapReduce是一個處理和生成超大數據集的算法模型。MapReduce架構程序能夠在大量的普通機器上進行並行處理,它可以實現運行在規模可以靈活調整的普通計算機集群之上,依然是利用了大量的普通機器組成集群來提升自己的性能。Google為了處理並行計算問題、分發數據問題和處理錯誤,並且受到了來自Lisp語言的靈感,以至后面可以寫出Map和Reduce的原語。
中間部分主要講的就是MapReduce的原理以及它的使用環境。首先介紹的是MapReduce的編程模型原理,它主要是利用一個輸入集合來產生一個輸出集合,對應於MapReduce庫就是使用兩個函數來表示這個計算,Map和Reduce。MapReduce模型可以有多種不同的實現方式,它是根據實際情況來進行配置,在Google內部就是用以太網進行連接的多台普通PC機組成的集群來實現的。在執行運算時,Map和Reduce都可以將數據分成多段然后部署到多台機器上運行,以此來達到並行計算的目的。數據結構使用的是Master,它存儲數據的大小和位置。MapReduce還有很好的容錯機制,比如出現worker故障時,若已完成Map任務,則重新訪問;若已經完成Reduce任務則不需要再次執行。后面還有Master失敗、數據失效方面的容錯處理等。MapReduce在運行過程中數據是存儲在GFS上的。除了Map和Reduce兩個處理函數外,MapReduce還存在許多的擴展功能,比如有分區函數、順序保證、Combiner函數,它還支持多種不同格式的輸入數據。
最后主要來看看MapReduce的性能和它的經驗教訓方面的內容,Google通過再一個大型集群上的兩個計算來衡量MapReduce的性能,最后可以看到它的讀寫速度是驚人的,這也體現出了並行計算的優勢。MapReduce編程模型可以應用到Google的多個領域,這主要歸功於MapReduce封裝了並行處理、容錯處理、數據本地化優化、負載均衡等等技術。它也為Google解決了需要大量計算的問題。

感想

        縱觀Google的三篇論文,《Google File System》、《Google Bigtable》和《Google MapReduce》其實描述的就是Google的三種技術,GFS分布式文件系統,Bigtable分布式數據存儲系統,MapReduce編程模型,都是基於分布式並行運行的,都是部署在大量普通機器組成的集群之上,其實相互之間都有相似之處,也能協調在一起運行和工作。這也是在2003到2006年之間Google陸續發表的論文,三篇文章的重要目的就是解決分布式並行計算的問題。這也為大數據技術的發展和應用提供了可能。

 

內容轉載於https://blog.csdn.net/hallobike/article/details/109146816

中英文論文下載:

鏈接:https://pan.baidu.com/s/1LwgSZ3idQBL40y_km-Sxqg
提取碼:dagx


免責聲明!

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



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