資源描述:
《Google云計算的關(guān)鍵技術(shù)(一)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、?Google云計算的關(guān)鍵技術(shù)(一)Google云計算的關(guān)鍵技術(shù)主要包括:Google文件系統(tǒng)GFS、分布式計算編程模型MapReduce、分布式鎖服務(wù)Chubby和分布式結(jié)構(gòu)化數(shù)據(jù)存儲系統(tǒng)BigTable等。其中:1)GFS提供了海量數(shù)據(jù)存儲和訪問的能力;2)MapReduce使得海量信息的并行處理變得簡單易行;3)Chubby保證了分布式環(huán)境下并發(fā)操作的同步問題;4)BigTable使得海量數(shù)據(jù)的管理和組織十分方便。lGFSGFS是一個面向海量數(shù)據(jù)密集型應(yīng)用的、可伸縮的分布式文件系統(tǒng),它為Google云計算提
2、供了海量存儲的能力,處于整個Google云計算技術(shù)體系的最底層。GFS使用廉價的商用機(jī)器構(gòu)建分布式文件系統(tǒng),將容錯的任務(wù)交由文件系統(tǒng)來完成,利用軟件的方法解決系統(tǒng)可靠性的問題,不但使得存儲的成本成倍下降,更是很好地在頻繁的故障中確保了數(shù)據(jù)存儲的安全和數(shù)據(jù)存儲服務(wù)的連續(xù)性,從整體上確保了整個系統(tǒng)的可靠性,進(jìn)而可以為大量客戶機(jī)提供高性能的服務(wù)。一、架構(gòu)一個GFS集群包含一個單獨(dú)的Master邏輯節(jié)點(diǎn)、多臺Chunk服務(wù)器,并且同時被多個客戶端訪問,如下圖所示。GFS存儲的文件都被分割成固定大小的Chunk。在Chun
3、k創(chuàng)建的時候,Master服務(wù)器會給每個Chunk分配一個不變的、全球唯一的64位的Chunk標(biāo)識。Chunk服務(wù)器把Chunk以linux文件的形式保存在本地硬盤上,并且根據(jù)指定的Chunk標(biāo)識和字節(jié)范圍來讀寫塊數(shù)據(jù)。出于可靠性的考慮,每個塊都會復(fù)制到多個塊服務(wù)器上。缺省情況下,我們使用3個存儲復(fù)制節(jié)點(diǎn),不過用戶可以為不同的文件命名空間設(shè)定不同的復(fù)制級別。Master節(jié)點(diǎn)管理所有的文件系統(tǒng)元數(shù)據(jù),在邏輯上只有一個。這些元數(shù)據(jù)包括名字空間、訪問控制信息、文件和Chunk的映射信息、以及當(dāng)前Chunk的位置信息;M
4、aster節(jié)點(diǎn)還管理著系統(tǒng)范圍內(nèi)的活動,比如Chunk在Chunk服務(wù)器之間的遷移等。Master節(jié)點(diǎn)使用心跳信息周期地和每個Chunk服務(wù)器通訊,發(fā)送指令到各個Chunk服務(wù)器并接收Chunk服務(wù)器的狀態(tài)信息。GFS客戶端代碼以庫的形式被鏈接到客戶程序里??蛻舳舜a實(shí)現(xiàn)了GFS文件系統(tǒng)的API接口函數(shù)、應(yīng)用程序與Master節(jié)點(diǎn)和Chunk服務(wù)器通訊、以及對數(shù)據(jù)進(jìn)行讀寫操作??蛻舳撕蚆aster節(jié)點(diǎn)的通信只獲取元數(shù)據(jù),所有的數(shù)據(jù)操作都是由客戶端直接和Chunk服務(wù)器進(jìn)行交互的。無論是客戶端還是Chunk服務(wù)器都
5、不需要緩存文件數(shù)據(jù)(客戶端會緩存元數(shù)據(jù))??蛻舳司彺鏀?shù)據(jù)幾乎沒有什么用處,因?yàn)榇蟛糠殖绦蛞匆粤鞯姆绞阶x取一個巨大文件,要么工作集太大根本無法被緩存。Chunk服務(wù)器不需要緩存文件數(shù)據(jù)的原因是:Chunk以本地文件的方式保存,Linux操作系統(tǒng)的文件系統(tǒng)緩存會把經(jīng)常訪問的數(shù)據(jù)緩存在內(nèi)存中。設(shè)計思路:集中+分布。單一的Master節(jié)點(diǎn)便于通過全局的信息精確定位Chunk的位置以及進(jìn)行復(fù)制決策。同時,為了避免Master節(jié)點(diǎn)成為系統(tǒng)的瓶頸,必須減少對Master節(jié)點(diǎn)的讀寫:客戶端并不通過Master節(jié)點(diǎn)讀寫文件數(shù)據(jù),
6、只是通過其詢問應(yīng)該聯(lián)系的Chunk服務(wù)器,后續(xù)的操作將直接和Chunk服務(wù)器進(jìn)行數(shù)據(jù)讀寫操作。二、客戶端訪問GFS流程首先,客戶端把文件名和程序指定的字節(jié)偏移,根據(jù)固定的Chunk大小,轉(zhuǎn)換成文件的Chunk索引。然后,它把文件名和Chunk索引發(fā)送給Master節(jié)點(diǎn)。Master節(jié)點(diǎn)將相應(yīng)的Chunk標(biāo)識和副本的位置信息發(fā)還給客戶端??蛻舳擞梦募虲hunk索引作為key緩存這些信息。之后客戶端發(fā)送請求到其中的一個副本處,一般會選擇最近的。請求信息包含了Chunk的標(biāo)識和字節(jié)范圍。在對這個Chunk的后續(xù)讀取
7、操作中,客戶端不必再和Master節(jié)點(diǎn)通訊了,除非緩存的元數(shù)據(jù)信息過期或者文件被重新打開。三、Chunk尺寸的設(shè)定Chunk的大小是關(guān)鍵的設(shè)計參數(shù)之一。選擇64MB這個較大尺寸有幾個重要的優(yōu)點(diǎn)。首先,它減少了客戶端和Master節(jié)點(diǎn)通訊的需求,因?yàn)橹恍枰淮魏蚆ater節(jié)點(diǎn)的通信就可以獲取Chunk的位置信息,之后就可以對同一個Chunk進(jìn)行多次的讀寫操作。這種方式對降低工作負(fù)載來說效果顯著,因?yàn)閼?yīng)用程序通常是連續(xù)讀寫大文件。其次,采用較大的Chunk尺寸,客戶端能夠?qū)σ粋€塊進(jìn)行多次操作,這樣就可以通過與Chun
8、k服務(wù)器保持較長時間的TCP連接來減少網(wǎng)絡(luò)負(fù)載。第三,選用較大的Chunk尺寸減少了Master節(jié)點(diǎn)需要保存的元數(shù)據(jù)的數(shù)量。這就允許我們把元數(shù)據(jù)全部放在內(nèi)存中。此外,為了避免因內(nèi)部碎片造成的空間浪費(fèi),GFS采用了惰性空間分配策略。四、元數(shù)據(jù)Master服務(wù)器存儲3種主要類型的元數(shù)據(jù),包括:文件和Chunk的命名空間、文件和Chunk的對應(yīng)關(guān)系、每個Chunk副本的存放地點(diǎn)