天天看點

讀Google三篇論文有感

讀Google三篇論文有感

在這一個星期内,我認真讀了谷歌的三篇重要論文,下面是我的讀後感。這三篇論文分别是Google FS、MapReduce、Bigtable。Google沒有公布這三個産品的源碼,但是論文裡面非常詳細的介紹了設計思想及功能實作,奠定了大資料算法的基礎。因為了解能力有限,是以隻能非常淺顯的談一下我的感受。

一.GFS

我覺得Google的設計思想是順應時代的發展和要求,随着社會發展,人口的增多,我們需要處理更多的資料。Google GFS 檔案系統,是一個面向大規模資料密集型應用的、可伸縮的分布式檔案系統,我們知道GFS是運作在低性能的電腦上,運作過程中會出現許多問題,比如各種bug、人為的失誤,硬碟損壞、網絡中斷以及電源失效等問題,是以問題監測,災難備援以及自動恢複的機制是GFS的優點之一。GFS的存儲方法更加優秀,存儲的檔案被分為固定大小的塊Chunk,一個單獨的Master節點與多台Chunk伺服器聯系,用戶端隻向Master請求中繼資料,其他操作都是直接和Chunk通信交流。另外,我覺得GFS的心跳機制設計的真的很好,使用心跳資訊周期性地和每個Chunk伺服器通訊,檢測它們的狀态,說白了就是看它們是否還活着,這種機制是對檔案對客戶的一種保證。

二、MapReduce

MapReduce是處理和生成超大資料集的一個算法程式設計模型。模型分為Map(映射),Reduce(歸并)兩部分,Map函數是一個處理key/value鍵值對的資料集合的過程,Reduce函數是将它們合并的過程。資料檔案被拆分成多塊,master将資料發給worker進行讀取,然後做Reduce函數處理。例如有兩副撲克牌,分給5個人,每個人數出自己手上有幾張紅心,這是Map函數的工作,而Reduce函數則将這5個人數出的結果合并後輸出。同時幾百甚至幾千台普通的廉價裝置并行處理增加了容錯率,也大大減少了處理時間。

三、Bigtable

BigTable是一個分布式,結構化資料的存儲系統,它用來存儲海量資料。每個Table都是一個多元的稀疏圖,Table由行和列組成,每個存儲單元都有一個時間戳,記錄資料變動情況。這種列式存儲廣泛應用在搜尋引擎,不關心具體内容,隻需要查出與你關鍵字比對的索引。BigTable用GFS來存儲日志和資料檔案,按SSTable檔案格式存儲資料,用Chubby管理中繼資料。

總之,GFS是檔案系統,MapReduce是計算模型,BigTable是存儲系統,三者互相關聯。當然了,想要更深層次的了解需要一個積累的過程,現在網絡資源豐富,要把握時代,在聽老師授課之外更多的是自己的了解,放寬視野,幾率知識,不斷學習。

繼續閱讀