自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

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

云計(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。

「后端分布式系列」前面關(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)圖如下:

 

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

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ù)的。

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

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

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

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

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

寫入流程

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

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

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

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

如下圖,我們?cè)敿?xì)描述下這個(gè)過程。

 

  1. 客戶端請(qǐng)求 Master 詢問哪個(gè) chunkserver 持有租約以及其他副本的位置。如果沒有 chunkserver 持有租約,說明該 chunk 最近沒有寫操作。Master 則選擇將租約授權(quán)給其中一臺(tái) 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è)寫請(qǐng)求控制命令到主副本。由主副本分配連續(xù)的序列號(hào)來確定最終的寫入順序。
  5. 主副本轉(zhuǎn)發(fā)寫請(qǐng)求到所有次副本,次副本按主副本安排的順序執(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ā)寫的思路,本文就兩者的寫入模型和過程做了一些對(duì)比說明,并希望引發(fā)一些思考。

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

責(zé)任編輯:Ophira 來源: 個(gè)人博客
相關(guān)推薦

2020-02-20 11:56:38

容器云分布式存儲(chǔ)哪種更好

2013-01-07 10:29:31

大數(shù)據(jù)

2019-06-20 08:59:51

HDFSCEPHGFS

2018-10-29 12:51:35

分布式存儲(chǔ)元數(shù)據(jù)

2018-10-16 14:26:22

分布式塊存儲(chǔ)引擎

2013-06-18 14:33:13

HDFS分布式文件系統(tǒng)

2018-11-20 09:05:11

傳統(tǒng)存儲(chǔ)分布式存儲(chǔ)

2017-10-27 08:40:44

分布式存儲(chǔ)剪枝系統(tǒng)

2024-07-29 09:57:47

2018-06-08 08:46:14

RaftPaxos系統(tǒng)

2012-12-28 17:31:06

2024-08-12 16:20:27

2015-05-12 13:03:54

開源分布式存儲(chǔ)HDFS

2012-08-31 16:04:11

HDFS分布式文件系統(tǒng)

2013-06-18 14:00:59

HDFS分布式文件系統(tǒng)

2015-05-13 09:34:46

分布式存儲(chǔ)元數(shù)據(jù)設(shè)計(jì)公有云

2013-06-18 14:13:43

HDFS分布式文件系統(tǒng)

2023-10-08 10:49:16

搜索系統(tǒng)分布式系統(tǒng)

2023-05-05 06:13:51

分布式多級(jí)緩存系統(tǒng)

2020-10-29 18:53:38

HDFSNameNodeDataNode
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)