深入淺出Google File System

GFS是什么

GFS,顧名思義就是谷歌文件系統(tǒng),和Big Table,Map Reduce并稱谷歌三駕馬車。 大部分谷歌服務(wù)的基石(Search, Cloud Drive, Gmail etc.)

圖片

最底層是文件系統(tǒng),在之上是將數(shù)據(jù)模型抽象出來,便于很好的使用,這就是bigTable,在之上是算法, 算法除了訪問數(shù)據(jù)模型外,還能夠直接訪問文件系統(tǒng),最上面就是各類應(yīng)用了

gfs從哪里來

源頭是如何保存一個(gè)文件?
圖片

保存文件需要兩部分:

metadata:包括文件信息和索引
file content:具體的文件內(nèi)容

進(jìn)一步如何保存大文件
圖片

此時(shí)索引信息會(huì)保存的粒度更粗,存的是chunk,每個(gè)chunk是64M

再進(jìn)一步,怎么保存超大文件
圖片

確定啊很明顯:chunkServer的變化都需要將其告訴master

怎么進(jìn)行改進(jìn)?

圖片
系統(tǒng)設(shè)計(jì)中非常關(guān)鍵的點(diǎn):耦合和聚合,將屬于它的放到它那,不屬于的放到其他地方

將master保存每一塊在哪個(gè)服務(wù)器上,每個(gè)服務(wù)器的索引放到chunkServer中

GFS容錯(cuò)機(jī)制

  • 怎么發(fā)現(xiàn)數(shù)據(jù)損壞
圖片

可以對每個(gè)block保存?zhèn)€checksum,對于1T的數(shù)據(jù),只有64M,完全可以放到內(nèi)存中

如果數(shù)據(jù)損壞的話呢,Chunk Server就找Master恢復(fù)數(shù)據(jù)
圖片

為了防止數(shù)據(jù)的丟失,就做冗余存儲(chǔ),每個(gè)chunk存3份,在chunkServer的選擇上,盡可能放到不同的機(jī)房,然后同機(jī)房也放到不同的機(jī)架上

圖片

master是關(guān)鍵,會(huì)同時(shí)發(fā)送心跳檢查Chunk Server是否運(yùn)行正常。如果有服務(wù)器掛掉的話就向Master申請恢復(fù)
圖片

心跳的設(shè)計(jì):可能是由于master和server之間網(wǎng)絡(luò)不通,這個(gè)時(shí)候,master會(huì)求助其他的server,讓他們再去ping下失聯(lián)的server

圖片

當(dāng)發(fā)現(xiàn)副本數(shù)小于3個(gè),會(huì)啟動(dòng)修復(fù)進(jìn)程進(jìn)行修復(fù),修復(fù)的優(yōu)先級

怎么應(yīng)對熱點(diǎn)

圖片

負(fù)載均衡

核心讀寫操作

好了,我們構(gòu)建這么一個(gè)龐大的系統(tǒng)最后不就是要讀和寫嘛,現(xiàn)在我們看看GFS是如何讀寫的。讀數(shù)據(jù)時(shí)Client先向Master要到Chunk信息,然后去ChunkServer取數(shù)據(jù)

圖片

寫文件的時(shí)候呢,也是先找到Master Server要到信息,然后找到距離最近的Chunk Server。由其帶領(lǐng)其他ChunkServer一起寫數(shù)據(jù)。如果圖中有任何一步出現(xiàn)錯(cuò)誤則中止寫入,返回錯(cuò)誤

圖片

寫的時(shí)候是往最近的server寫,然后server再接收到數(shù)據(jù)后就往其他server發(fā)送,在寫入的時(shí)候呢,是先緩存下來,最后都緩存好了,再寫入到磁盤,好處是減少出錯(cuò)的概率,因?yàn)橐坏┚彺婧茫賹懗鲥e(cuò)的幾率就大大減少了。

第3步是cache,都cached后,由primary server負(fù)責(zé)協(xié)調(diào)開始寫入,都寫成功后,告訴客戶端

如果寫入出錯(cuò)了怎么辦?如果引入出錯(cuò)處理機(jī)制,會(huì)引入更多的問題,往往解決一個(gè)問題會(huì)帶來更多的問題,因此系統(tǒng)在設(shè)計(jì)過程中,盡可能只提供最簡單的功能,由客戶端來負(fù)責(zé)重試

參考

深入淺出Google File System:視頻
硅谷之路9:深入淺出理解GFS:文字

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 引言 GFS是谷歌2003年提出的一個(gè)文件系統(tǒng)。雖然GFS比較古老,但是后來的HDFS,是受到了GFS的啟發(fā),是G...
    炸茄盒閱讀 2,554評論 1 5
  • 分布式文件系統(tǒng)的主要功能有兩個(gè):一個(gè)是存儲(chǔ)文檔、圖像、視頻之類的Blob類型數(shù)據(jù);另外一個(gè)是作為分布式表格系統(tǒng)的持...
    olostin閱讀 3,221評論 1 5
  • sina Google File System,一個(gè)適用于大規(guī)模分布式數(shù)據(jù)處理相關(guān)應(yīng)用的,可擴(kuò)展的分布式文件系統(tǒng)。...
    橙小汁閱讀 700評論 0 0
  • 眾所周知,Hadoop的存儲(chǔ)基礎(chǔ),HDFS分布式文件系統(tǒng),是按照GFS的思想實(shí)現(xiàn)的。本文參考:Google Fil...
    SmileySure閱讀 1,129評論 0 1
  • 空森林閱讀 725評論 10 6