日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
分布式存儲(chǔ)HDFS與GFS的設(shè)計(jì)差異

分布式存儲(chǔ) HDFS 與 gfs 的設(shè)計(jì)差異

作者:-mindwind- 2015-10-19 11:41:30

云計(jì)算

分布式 我們知道 HDFS 最早是根據(jù) GFS(Google File System)的論文概念模型來設(shè)計(jì)實(shí)現(xiàn)的。HDFS 參照了它所以大部分架構(gòu)設(shè)計(jì)概念是類似的,比如 HDFS NameNode 相當(dāng)于 GFS Master,HDFS DataNode 相當(dāng)于 GFS chunkserver。

創(chuàng)新互聯(lián)建站-成都網(wǎng)站建設(shè)公司,專注網(wǎng)站建設(shè)、做網(wǎng)站、網(wǎng)站營銷推廣,域名與空間,網(wǎng)頁空間,網(wǎng)站改版維護(hù)有關(guān)企業(yè)網(wǎng)站制作方案、改版、費(fèi)用等問題,請聯(lián)系創(chuàng)新互聯(lián)建站。

「后端分布式系列」前面關(guān)于 HDFS 的一些文章介紹了它的整體架構(gòu)和一些關(guān)鍵部件的設(shè)計(jì)實(shí)現(xiàn)要點(diǎn)。

我們知道 HDFS 最早是根據(jù) GFS(Google File System)的論文概念模型來設(shè)計(jì)實(shí)現(xiàn)的。

然后呢,我就去把 GFS 的原始論文找出來仔細(xì)看了遍,GFS 的整體架構(gòu)圖如下:

HDFS 參照了它所以大部分架構(gòu)設(shè)計(jì)概念是類似的,比如 HDFS NameNode 相當(dāng)于 GFS Master,HDFS DataNode 相當(dāng)于 GFS chunkserver。

但還有些細(xì)節(jié)不同的地方,所以本文主要分析下不同的地方。

寫入模型

HDFS 在考慮寫入模型時(shí)做了一個(gè)簡化,就是同一時(shí)刻只允許一個(gè)寫入者或追加者。

在這個(gè)模型下同一個(gè)文件同一個(gè)時(shí)刻只允許一個(gè)客戶端寫入或追加。

而 GFS 則允許同一時(shí)刻多個(gè)客戶端并發(fā)寫入或追加同一文件。

允許并發(fā)寫入帶來了更復(fù)雜的一致性問題。

多個(gè)客戶端并發(fā)寫入時(shí),它們之間的順序是無法保證的,同一個(gè)客戶端連續(xù)追加成功的多個(gè)記錄也可能被打斷。

這意味著一個(gè)客戶端在連續(xù)寫入文件數(shù)據(jù)時(shí),它的數(shù)據(jù)最終在文件中的分布可能是不連續(xù)的。

所謂一致性就是,對同一個(gè)文件,所有的客戶端看到的數(shù)據(jù)是一致的,不管它們是從哪個(gè)副本讀取的。

如果允許多個(gè)客戶端同時(shí)寫一個(gè)文件,怎么保證寫入數(shù)據(jù)在多個(gè)副本間一致?

我們前面講 HDFS 時(shí)它只允許一個(gè)寫入者按流水線方式寫入多個(gè)副本,寫入順序一致,寫入完成后數(shù)據(jù)將保持最終一致。

而對多個(gè)客戶端而言,就必須讓所有同時(shí)寫入的客戶端按同一種流水線方式去寫入,才可能保證寫入順序一致。

這個(gè)寫入流程我們下一節(jié)詳細(xì)分析。

寫入流程

GFS 使用租約機(jī)制來保障在跨多個(gè)副本的數(shù)據(jù)寫入中保持順序一致性。

GFS Master 將 chunk 租約發(fā)放給其中一個(gè)副本,這個(gè)副本我們就稱為主副本,其他副本稱為次副本。

由主副本來確定一個(gè)針對該 chunk 的寫入順序,次副本則遵守這個(gè)順序,這樣就保障了全局順序一致性。

chunk 租約機(jī)制的設(shè)計(jì)主要是為了減輕 Master 的負(fù)擔(dān),由主副本所在的 chunkserver 來承擔(dān)流水線順序的安排。

如下圖,我們詳細(xì)描述下這個(gè)過程。

  1. 客戶端請求 Master 詢問哪個(gè) chunkserver 持有租約以及其他副本的位置。如果沒有 chunkserver 持有租約,說明該 chunk 最近沒有寫操作。Master 則選擇將租約授權(quán)給其中一臺 chunkserver。
  2. Master 返回客戶端主副本和次副本的位置信息。客戶端緩存這些信息以備將來使用??蛻舳艘院蟛辉傩枰?lián)系 Master,除非主副本所在 chunkserver 不可用或返回租約過期了。
  3. 客戶端選擇***的網(wǎng)絡(luò)順序推送數(shù)據(jù),chunkserver 將數(shù)據(jù)先緩存在內(nèi)部的 LRU 緩存中。GFS 中采用數(shù)據(jù)流和控制流分離的方法,從而能夠基于網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)更好地調(diào)度數(shù)據(jù)流的傳輸。
  4. 一旦所有的副本確認(rèn)收到了數(shù)據(jù),客戶端將發(fā)送一個(gè)寫請求控制命令到主副本。由主副本分配連續(xù)的序列號來確定最終的寫入順序。
  5. 主副本轉(zhuǎn)發(fā)寫請求到所有次副本,次副本按主副本安排的順序執(zhí)行寫入操作。
  6. 次副本寫完后向主副本應(yīng)答確認(rèn)操作完成。
  7. ***主副本應(yīng)答客戶端,若任意副本寫入過程中出現(xiàn)錯(cuò)誤,將報(bào)告給客戶端,由客戶端發(fā)起重試。

GFS 和 HDFS 的寫入流程都采用了流水線方式,但 HDFS 沒有分離數(shù)據(jù)流和控制流。

HDFS 的數(shù)據(jù)流水線寫入在網(wǎng)絡(luò)上的傳輸順序與最終寫入文件的順序一致。

而 GFS 數(shù)據(jù)在網(wǎng)絡(luò)上的傳輸順序與最終寫入文件的順序可能不一致。

GFS 在支持并發(fā)寫入和優(yōu)化網(wǎng)絡(luò)數(shù)據(jù)傳輸方面做出了***的折衷。

總結(jié)

GFS 的論文發(fā)表于 2003 年,后來大部分的分布式文件系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)或多或少都參考了 GFS 的設(shè)計(jì)思路。

而 HDFS 算是開源分布式文件系統(tǒng)中最完整實(shí)現(xiàn)了 GFS 論文中的概念模型。

但 HDFS 依然簡化了 GFS 中關(guān)于并發(fā)寫的思路,本文就兩者的寫入模型和過程做了一些對比說明,并希望引發(fā)一些思考。

博文出處:http://blog.csdn.net/mindfloating/article/details/49103611


文章標(biāo)題:分布式存儲(chǔ)HDFS與GFS的設(shè)計(jì)差異
網(wǎng)頁URL:http://www.5511xx.com/article/dpdsjdh.html