Google文件系統(tǒng)
歷史
設(shè)計(jì)
GFS專門為Google的核心數(shù)據(jù)即頁面搜索的存儲(chǔ)進(jìn)行了優(yōu)化。數(shù)據(jù)使用大到若干G字節(jié)的大文件持續(xù)存儲(chǔ),而這些文件極少、覆蓋或者減??;通常只是進(jìn)行添加或讀取操作。它也是針對(duì)Google的計(jì)算機(jī)集群進(jìn)行的設(shè)計(jì)和優(yōu)化,這些節(jié)點(diǎn)是由廉價(jià)的“常用”計(jì)算機(jī)組成,這就意味著必須防止單個(gè)節(jié)點(diǎn)的高損害率和隨之帶來的數(shù)據(jù)丟失。其它設(shè)計(jì)理念包括高數(shù)據(jù)吞吐率,甚至這帶來了訪問反應(yīng)期變差。
節(jié)點(diǎn)分為兩類: 主 節(jié)點(diǎn)和 Chunkservers 。Chunkservers存儲(chǔ)數(shù)據(jù)文件,這些單個(gè)的文件象常見的文件系統(tǒng)中的簇或者扇區(qū)那樣被分成固定大小的數(shù)據(jù)塊(這也是名字的由來)。每個(gè)數(shù)據(jù)塊有一個(gè)唯一的64位標(biāo)簽,維護(hù)從文件到組成的數(shù)據(jù)塊的邏輯映射。每個(gè)數(shù)據(jù)塊在網(wǎng)絡(luò)上復(fù)制一個(gè)固定數(shù)量的次數(shù),缺省次數(shù)是3次,對(duì)于常用文件如可執(zhí)行文件的次數(shù)要更多。
主服務(wù)器通常并不存儲(chǔ)實(shí)際的大塊數(shù)據(jù),而是存儲(chǔ)與大塊數(shù)據(jù)相關(guān)的元數(shù)據(jù),這樣的數(shù)據(jù)如映射表格將64位標(biāo)簽映射到大塊數(shù)據(jù)位置及其組成的文件、大塊數(shù)據(jù)副本位置、哪個(gè)進(jìn)程正在讀寫特定的大數(shù)據(jù)塊或者追蹤復(fù)制大塊數(shù)據(jù)的“快照”(通常在主服務(wù)器的激發(fā)下,當(dāng)由于節(jié)點(diǎn)失敗的時(shí)候,一個(gè)大數(shù)據(jù)塊的副本數(shù)目降到了設(shè)定的數(shù)目下)。所有這些元數(shù)據(jù)通過主服務(wù)器周期性地接收從每個(gè)數(shù)據(jù)塊服務(wù)器來的更新(“心跳消息”)保持最新狀態(tài)。
操作的允許授權(quán)是通過限時(shí)的、倒計(jì)時(shí)“租期”系統(tǒng)來處理的,主服務(wù)器授權(quán)一個(gè)進(jìn)程在有限的時(shí)間段內(nèi)訪問數(shù)據(jù)塊,在這段時(shí)間內(nèi)主服務(wù)器不會(huì)授權(quán)其它任何進(jìn)程訪問數(shù)據(jù)塊。被更改的chunkserver——總是主要的數(shù)據(jù)塊存儲(chǔ)器,然后將更改復(fù)制到其它的chunkserver上。這些變化直到所有的chunkserver確認(rèn)才存儲(chǔ)起來,這樣就保證了操作的完整性和原子性。
訪問大數(shù)據(jù)塊的程序首先查詢主服務(wù)器得到所要數(shù)據(jù)塊的位置,如果大數(shù)據(jù)塊沒有進(jìn)行操作(沒有重要的租約),主服務(wù)器回答大數(shù)據(jù)塊的位置,然后程序就可以直接與chunkserver進(jìn)行聯(lián)系接收數(shù)據(jù)(類似于Kazaa和它的超級(jí)節(jié)點(diǎn))。
批評(píng)意見
只能有一個(gè)主服務(wù)器——代碼不允許存在多個(gè)主服務(wù)器。這看起來是限制系統(tǒng)可擴(kuò)展性和可靠性的一個(gè)缺陷,因?yàn)橄到y(tǒng)的最大存儲(chǔ)容量和正常工作時(shí)間受制于主服務(wù)器的容量和正常工作時(shí)間,也因?yàn)樗獙⑺械脑獢?shù)據(jù)進(jìn)行編制,并且因?yàn)閹缀跛械膭?dòng)作和請(qǐng)求都經(jīng)過它;但是Google的工程師們辯解說事實(shí)并不是這樣。元數(shù)據(jù)是非常緊湊的,僅僅只有數(shù)K到數(shù)M的大小,并且主服務(wù)器通常是網(wǎng)絡(luò)上性能最好的節(jié)點(diǎn)之一;至于可靠性,通常有一個(gè)“影子”主服務(wù)器制作主服務(wù)器的鏡像,一旦主服務(wù)器失敗它將接替工作。另外,主服務(wù)器極少成為瓶頸,因?yàn)榭蛻舳藘H僅獲取元數(shù)據(jù)然后將它們緩存起來;隨后的交互工作是直接與chunkservers進(jìn)行。同樣,使用單個(gè)的主服務(wù)器可以大幅度地降低軟件的復(fù)雜性,如果有多個(gè)的主服務(wù)器,軟件將變得復(fù)雜以能夠保證數(shù)據(jù)完整性、自動(dòng)操作、負(fù)載均衡和安全性。
參見
Hadoop-Apache軟件基金會(huì)的開放源代碼項(xiàng)目,提供與Google文件系統(tǒng)類似的功能。
Google產(chǎn)品列表
Gmail文件系統(tǒng)GmailFS使用一個(gè)可加載的Linux文件系統(tǒng),它使用Gmail帳號(hào)作為存儲(chǔ)媒介。
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
- 有價(jià)值
- 一般般
- 沒價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}