久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Hadoop HDFS和KFS (CloudStore)的比較

 朱廣彬 2011-08-21

HDFSKFS 比較

By云深作者:Terry/Lanlan/Adam 20091

轉載請注明出處

1HDFS KFS 簡介

兩者都是GFS的開源實現(xiàn),,而HDFS Hadoop 的子項目,用Java實現(xiàn),,為Hadoop上層應用提供高吞吐量的可擴展的大文件存儲服務,。

Kosmos filesystemKFS is a high performance distributed filesystem for web-scale applications such as, storing log data, Map/Reduce data etc. It builds upon ideas from Google‘s well known Google Filesystem project. C++實現(xiàn)

本文選取的源碼版本如下:

hadoop-0.17.2.1

Kfs 0.2.2

2HDFSKFS體系架構

1 體系架構

HDFSKFS都屬于分布式文件系統(tǒng),,它們的元數(shù)據(jù)管理采用集中式方式實現(xiàn),,數(shù)據(jù)實體先分片然后分布式存儲。本文先介紹這類系統(tǒng)的模塊組成以及各模塊的關鍵技術,,并以此為線索分析和比較HDFS的異同點,。

HDFSKFS大致有以下幾個模塊組成:

MetaServer

Namespace 管理

Layout管理

MetaImage管理

Lease管理

ChunkServer

Chunk管理

Chunk存儲

Client Transaction Layer,,該部分是系統(tǒng)給上層應用提供的接口,本文不予比較,。

3,、HDFSKFS各模塊的關鍵技術

HDFSKFS關鍵實現(xiàn)技術如下:

MetaServer

Namespace的組織和維護

MetaData的序列化和加載

系統(tǒng)恢復

Chunk LayoutChunkServer選擇

Lease的管理和維護

ChunkServer

Chunk存儲組織

本地Chunk 信息的重建

Chunk失效處理

Client Transaction:文件操作

4HDFSKFS MetaServer實現(xiàn)的比較(1

Namespace的組織和維護

HDFS Namespace的組織采用Component模式,,文件夾,、文件和Chunk組成如下層次結構。

Root /------|

|-----/terry---|---/sub0

|----file3---|---block0

|---block1

|-----/adam--|---/sub0

|-------file0

| --block2

|-------tmpfile1

|---block3

|---block4

KFS采用B+樹存放文件系統(tǒng)的結點信息,,各結點存有父結點的索引,,從而實現(xiàn)文件夾、文件和Chunk的層次關系,。

5,、HDFSKFS MetaServer實現(xiàn)的比較(2

LayoutManagement實現(xiàn),包括Chunk Server選擇算法,、負載均衡實現(xiàn),。

Chunk Server選擇算法包括以下:

Chunk 創(chuàng)建時,Chunk Server的選擇,;

Chunk 實際拷貝數(shù)與需求不一致時,,Chunk的重拷貝和刪除問題。

寫入的ChunkServer具備的基本條件如下:

節(jié)點處于活躍期,;

節(jié)點有Chunk讀(拷貝源節(jié)點)或寫(拷貝目標節(jié)點)并發(fā)的余量,;

節(jié)點網(wǎng)絡流量小于系統(tǒng)平均流量的兩倍;

作為存儲點,,節(jié)點有存儲余量,;

Chunk在該節(jié)點所屬Rack上的拷貝數(shù)沒到上限;

基本原則:HDFS優(yōu)先保證前3份拷貝有兩份在一個Rack上,,另一份在不同的Rack上,;而KFS要求拷貝均勻分散在不同的Rack上。

Chunk創(chuàng)建時,,第一個存儲點的選擇問題:

當創(chuàng)建ChunkClient上部署有Chunk Server時,,HDFSKFS均優(yōu)先選擇該節(jié)點為首存儲點;

否則,,HDFS隨機選擇,,KFS優(yōu)先選擇存儲和網(wǎng)絡負載較輕的節(jié)點。

根據(jù)上述基本原則選擇其余節(jié)點,。

拷貝數(shù)小于需求時,,HDFS根據(jù)基本原則選擇備用節(jié)點;KFS優(yōu)先選擇失效節(jié)點相同Rack上的節(jié)點;

拷貝數(shù)大于需求時,,HDFS根據(jù)基本原則刪除多余的Location,;KFS優(yōu)先考慮拷貝的均勻分布,然后再根據(jù)節(jié)點的負載選擇失效拷貝,。

6,、HDFSKFS MetaServer實現(xiàn)的比較(3

MetaServer根據(jù)Namespace中的chunk列表,將列表亂序,,依此掃描chunk location信息,,將存儲或網(wǎng)絡負載超過閾值的節(jié)點上的拷貝標志為失效,并轉存到負載較低的節(jié)點上,。

負載控制方面:HDFS任務分配較KFS精細,;HDFS實現(xiàn)上有網(wǎng)絡流量控制,KFS沒有,。

實現(xiàn)方式上:HDFS使用多線程實現(xiàn)多任務并發(fā)執(zhí)行,,而KFS使用Reactor模式實現(xiàn)多任務并發(fā)。

7,、HDFSKFS MetaServer實現(xiàn)的比較(4

Meta Image Management,,包括FSImage和操作日志兩部分。

HDFS FSImage結構如圖2(新版本中刪除了DataNode Image部分),。

2 HDFS FSImage

KFS存儲元數(shù)據(jù)B+樹的葉子節(jié)點信息到磁盤上,,并記錄該鏡像加載過程中需要合并的操作日志文件名。

HDFS通過多目錄的同時備份,,并記錄checkpoint時間,。系統(tǒng)重啟時,通過檢查各目錄下鏡像信息以及中間文件存在狀態(tài),,采取合理的策略恢復元數(shù)據(jù)信息,,并生成新的元數(shù)據(jù)鏡像。

KFS在本地存有不同版本的鏡像和操作日志,,并通過一個硬鏈接指向最新的鏡像信息,。啟動時,加載硬鏈接指向的鏡像文件,,以及鏡像中存有的操作日志及其之后的所有的操作日志,,恢復元數(shù)據(jù)。

8,、HDFSKFS MetaServer實現(xiàn)的比較(5

Lease的管理和維護-1

HDFSKFS的鎖管理通過Lease方式來實現(xiàn),,并且都在Chunk級別加鎖。

HDFS僅對正在創(chuàng)建中文件擁有的Chunk加鎖,,即只有寫鎖。并且文件刪除過程中,直接清除該文件上所有的鎖,,使Lease renew操作失敗,,中斷用戶的寫操作。

KFS實現(xiàn)了讀和寫兩種鎖機制,,可以多用戶并發(fā)讀,,單用戶獨占寫,讀寫互斥,。已加鎖的文件刪除時,,將文件移動到Namespacedumpster目錄,待有鎖清除操作時,,檢查相關文件的鎖信息,,將無鎖的文件徹底刪除。

HDFS實現(xiàn)的是實名鎖,,記錄了客戶端信息,;KFS采用的是匿名鎖,僅記錄了分配的Lease ID,。

Lease的管理和維護-2

HDFSChunkServer沒有鎖標志,,MetaServer將寫鎖分配給Client,由Client刷新,;

KFS的實現(xiàn)相對復雜些,。

寫操作,MetaServer分配Chunk時,,給Main ChunkServer分配writer-Lease,,ChunkServer接收到Client的寫操作時檢查并RenewLease

讀操作,,MetaServerClient分配Reader-Lease,Client根據(jù)讀的進度進行LeaseRenew操作,;

Lease的銷毀有兩種方式:

定時器

特定的操作關聯(lián)刪除

鎖機制實現(xiàn)上,KFS相對完善些,,但其匿名鎖方式也可能存在隱患,。

9HDFSKFS ChunkServer實現(xiàn)的比較(1

ChunkServerChunk的存儲組織:

l HDFSKFS都可以配置多個存儲目錄,;

l 在存儲目錄存儲空間配額允許的情況下,,HDFS按照輪轉的方式將Chunk均勻的放置到各存儲目錄;KFS按照ChunkId和存儲目錄個數(shù)的模運算選擇存放目錄,。

l ChunkIdMetaServer統(tǒng)一分配,,HDFS的放置方式較KFS均勻,chunk維護的過程中,,要維護chunk到文件的映射,。KFS的放置策略簡單,,Chunk和文件之間的映射關系直接,但弊端也十分明顯,,配置文件中的存儲目錄數(shù)目不能修改,,否則系統(tǒng)將無法正常運作。KFS0.2.2中似乎并沒有解決這個問題,。

l 在同一個存儲目錄中,,HDFS每級目錄最多64Chunk64個子目錄,組成層次結構,。存放時Chunk時,,要求嵌套目錄的深度盡量小。KFS采用平面結構,,所有Chunk存放在一個目錄下,。根據(jù)底層文件系統(tǒng)實現(xiàn)機制,HDFS Chunk文件的定位速度較KFS快,。

l HDFS各工作目錄有文件鎖,,避免多網(wǎng)元共享存儲目錄引發(fā)錯誤;KFS沒有該保護機制,。

10,、HDFSKFS ChunkServer實現(xiàn)的比較(2

ChunkServerChunk存儲:

l HDFS中,每個Chunk存放兩個文件,,實體數(shù)據(jù)和Meta數(shù)據(jù),;KFS存放為一份文件,Meta數(shù)據(jù)存放在前16K文件頭區(qū)域,,實體數(shù)據(jù)存放在16k之后,。

l HDFSKFS默認的Chunk大小為64M,。Meta校驗碼部分均采用Adler_32算法。 HDFS根據(jù)配置,決定是否計算校驗碼,,以及校驗塊的大小,。 KFS16K數(shù)據(jù)計算一個32位校驗碼,,存放在對應的Meta數(shù)據(jù)區(qū)域,。

l KFS16K的文件頭,在實現(xiàn)Truncate操作時,,KFS0.2.2版本中似乎忽略了這部分數(shù)據(jù),,Bug or not

11,、HDFSKFS ChunkServer實現(xiàn)的比較(3

本地Chunk 信息的重建:

l HDFSKFS均通過掃描本地工作目錄,,重建內存中的Chunk管理數(shù)據(jù);

l HDFSChunkServer中沒有Chunk鏡像和操作日志記錄,;KFS中有這部分實現(xiàn),,在ChunkServer上存儲Chunk鏡像信息和操作日志,,并實現(xiàn)了啟動時對鏡像和操作日志的加載功能。但是這部分代碼沒有調用,,也許廢棄了,。

12HDFSKFS ChunkServer實現(xiàn)的比較(4

Chunk失效處理

l HDFSChunkServer通過定期的HeartbeatMetaServer匯報本地Chunk列表,,或者完成Chunk寫操作后,向MetaServer匯報新寫入的Chunk信息,。MetaServer根據(jù)狀態(tài),,向ChunkServer分發(fā)Chunk復制任務或者Chunk失效信息等。HDFS接收到失效信息后,,刪除Chunk文件,;

l KFS:啟動時或者在讀操作ChunkSum錯誤時,向MetaServer匯報Chunk信息,。MetaServer刪除Chunk有兩類操作:DeleteStale,。前者由Client觸發(fā),后者由ChunkServer匯報錯誤觸發(fā),。Delete操作下,,ChunkServer直接刪除chunk文件;Stale操作下,,ChunkServerChunk轉移到./lost+found目錄下,。但KFS0.2.2中沒有對./lost+found目錄中的文件做進一步處理,也許改進版本中會用到,。

13,、HDFSKFS Chunk寫流程上的區(qū)別(1

HDFS Chunk 寫流程,如圖3

3 HDFS Chunk 寫流程

14,、HDFSKFS Chunk寫流程上的區(qū)別(2

KFS Chunk 寫流程,,如圖4

4 KFS Chunk 寫流程

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多