導讀谷歌三大核心技術之一 GoogleFileSystem(一)

GoogleFileSystem設計構想

為滿足Google數據處理的需求,Google工程師設計并實現了GoogleFileSystem(GFS)。GFS與傳統分布式文件系統類似,也需要滿足高性能、可伸縮性、可靠性以及可用性。與傳統分布式文件系統思路不不同的是:

  1. GFS認為組件失效是常態而非意外,GFS由大量廉價設備組成
  2. 文件數量異常巨大
  3. 絕大部分文件修改采用文件尾部追加數據而非覆蓋原有數據
  4. 應用和文件系統協同設計

GFS架構設計

一個GFS包含一個單獨的Master節點、多臺Chunk服務器,并同時被多個客戶端訪問。
image

存儲方式

GFS存儲的文件被分割成固定大小的Chunk,Master分配給每個Chunk一個不變的64位唯一標識。每個Chunk備份到多個服務器上,以提高可靠性。

Master服務器

Master服務器管理所有Chunk的元數據,以管理各Chunk數據(類似于Linux文件系統的inode)。每個Chunk大小為64M,Chunk元數據大小為64字節,而且由于大多數文件包含多個Chunk因此可以將所有Chunk的元數據存儲在Master的內存中,增強系統的簡潔性、可靠性、高性能和靈活性。

Chunk信息

Master服務器不永久保存Chunk服務器有指定Chunk的副本的信息。因為在一個擁有數百臺服務器的集群中,Chunk服務器加入集群、離開集群、更名、失效、以及重啟的時候,Master服務器和Chunk服務器數據同步的問題會非常頻繁。Master服務器在啟動時候輪詢Chunk服務器,并在之后定期輪詢更新。

GFS的日志系統(災備)

操作日志包含了關鍵的元數據變更歷史記錄。操作日志是元數據唯一的持久化存儲記錄,同時也是判斷同步操作順序的邏輯時間基線(類似LSN),必須確保日志文件的完整,確保只有在元數據的變化被持久化后,日志才對客戶端是可見的。GFS把日志復制到多臺遠程機器,只有相應的日志記錄寫入到本地以及遠程機器的硬盤后,才會響應客戶端的操作請求。Master服務器會收集多個日志記錄后批量處理,以減少寫入磁盤和復制對系統整體性能的影響。

GFS災難恢復

Master服務器在災難恢復時,通過重演操作日志把文件系統恢復到最近的狀態。為了縮短Master啟動的時間,重演系統操作的日志量盡量的少。Master服務器在日志增長到一定量時對系統狀態做一次Checkpoint(對數據庫的快照)。在災難恢復的時候,Master服務器就通過從磁盤上讀取這個Checkpoint文件,以及重演Checkpoint之后的有限個日志文件就能夠恢復系統。Checkpoint文件以壓縮B-樹形勢的數據結構存儲,可以直接映射到內存,在用于命名空間查詢時無需額外的解析。Master服務器恢復只需要最新的Checkpoint文件和后續的日志文件。舊的Checkpoint文件和日志文件可以被刪除。通常會多保存一些歷史文件。Checkpoint失敗不會對正確性產生任何影響,因為恢復功能的代碼可以檢測并跳過沒有完成的Checkpoint文件。

資料
The Google File System – Research at Google
谷歌三大核心技術(一)Google File System中文版 譯者:alex

原創文章,作者:easyTang,如若轉載,請注明出處:http://www.www58058.com/74893

(13)
easyTangeasyTang
上一篇 2017-05-07
下一篇 2017-05-07

相關推薦

  • Linux第三周

    一.正則表達式和擴展正則表達式 1.首先有各種工具來對文本進行的查看,分析,統計   cat 命令:查看文本的工具    cat主要有三大功能:1.一次顯示整個文件。$ cat filename2.從鍵盤創建一個文件。$ cat > filename     只能創建新文件,不能編輯已有文件.…

    2017-06-04
  • 萬能的AWK

    awk:文本三劍客之一 #報告生成器,主要用來實現格式化文本輸出,它能夠實現在處理文本文件時對文檔中的某字段有條件顯示并以非常美觀的文本; 它是編程語言的解釋器;它也是一種完整的編程語言,它支持條件判斷、循環、變量、數組、函數等等各種各樣的編程語言所能實現的功能。 用法:awk [options] ‘program’ FILE &#8…

    2017-04-22
  • 編譯安裝nginx并實現反向代理負載均衡和緩存功能

    一、編譯安裝nginx 1、下載 [root@ns1 ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2、解壓 [root@ns1 ~]# tar xf nginx-1.10.0.tar.gz [root@ns1 ~]…

    Linux干貨 2016-05-25
  • Linux磁盤與文件系統管理

    Linux磁盤管理 硬盤的物理組成 柱面 硬盤與讀存數據相關的部件:圓形硬盤片(一或多個)、磁頭、機械臂。 硬盤片上有磁道,多個硬盤片上的同一磁道形成柱面,這個柱面就是分區時形成的最小單位,windows的C盤(系統盤)分區就是在最外層的一堆柱面上。 扇區 硬盤上的最小存儲單位叫扇區,每個扇區儲存512字節。在讀取數據的時候,硬盤會轉動,利用機械手臂將磁頭移…

    Linux干貨 2016-11-22
  • 用vsftpd來搭建網絡yum源

    1、分別在CentOS6和CentOS7分別搭建網絡yum源 a、CentOS 7中 首先安裝并啟用vsftpd服務 [root@node1 ~]# mount /dev/cdrom /mnt/yum/ [root@node1 ~]# vim /etc/yum.repos.d/local.repo [local] name=local baseurl=fil…

    2015-10-03
  • 學習宣言

    書山有路勤為徑,學海無涯苦作舟。學吧?。。?/p>

    Linux干貨 2016-10-29
欧美性久久久久