Google File System架構

jopen 10年前發布 | 15K 次閱讀 GFS 分布式/云計算/大數據

GFS是一個面向大規模數據密集型應用的,可伸縮的分布式文件系統。GFS可以運行在廉價的設備上,并且能夠提供具有容災、高性能的服務。


GFS架構:

一個GFS集群包括一個單點Master,多臺Chunk服務器 (ChunkServer,下面也稱塊服務器),并且能夠同時被多個客戶端訪問。如圖1所示。所有的這些機器可以使普通的運行用戶級線程的Linux機器。只要機器允許,我們完全可以將客戶端與Chunk服務器放在同一臺機器上。

Google File System架構


GFS上存儲的文件被分割成固定大小的Chunk(塊)。Chunk服務器把 Chunk以Linux文件的形式保存在本地磁盤上行,并根據指定的Chunk標識和字節范圍來讀寫數據。處于可靠性的考慮,每個塊會復制到多個 chunk服務器上。默認情況下,GFS被將塊復制為3份,當然,用戶可以指定這個參數。

Master節點管理著所有的文件系統元數據,包括命名空間、訪問控制信息、文件和 Chunk之間的映射信息、以及當前chunk的位置信息。Master節點還管理著全系統范圍內的活動,如塊的租用管理、孤立塊的回收、以及塊在不同塊服務器間的移動。Master使用心跳信息周期性的和每個Chunk服務器通訊,并發送指令到各個塊服務器并接收各個塊服務器的狀態信息。

無論是客戶端還是塊服務器都無需對文件數據進行緩存。客戶端無需緩存的原因,因為大部分程序需要以流的方式讀取一個巨大的文件,再者,工作集可能會很大以至于無法進行緩存。塊服務器無需緩存數據的原因,塊一本地的方式保存,Linux文件系統緩存會把經常訪問的數據緩存在內存中。


下面簡單解釋下在單點Master下一次簡單的讀取過程:

(1)客戶端向Master發送請求,請求信息為(文件名,塊索引)

(2)Master使用心跳信息監控塊服務器的狀態,并向其發送指令。

(3)塊服務器需要周期性的返回自己的狀態給Master,以確保能夠接收Master的請求。

(4)Master將(塊句柄,塊位置)這一信息返回給客戶端

(5)客戶端使用文件名和塊索引作為Key進行緩存信息。然后,客戶端發送請求到其中的一個副本中(通常為最近的),該請求包括(塊句柄,字節范圍)。對這個塊的后續操作,客戶端無需再和Master進行通信,除非緩存信息過期或者文件被重新打開。

(6)塊服務器將所需的塊數據發送給客戶端。

整個流程如下圖所示:Google File System架構

來自:http://blog.csdn.net/tao_sun/article/details/17888785

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!