分布式文件系統(tǒng)
特點
- 容忍硬件故障,3個副本,RS(x,y)糾刪碼 RS(10,4)膨脹率1.4 RAID5
- 流式數(shù)據(jù)存儲 只支持追加,刪除,而不能修改
- 大數(shù)據(jù)集 (100w個文件300m內存)
- 簡單的一致性模型 (是強一致性),不支持隨機讀取
- 移動計算比移動數(shù)據(jù)劃算 “數(shù)據(jù)本地性“
- 異構軟硬件可移植性
塊
概念
- 硬盤 塊大小一般為512B 每個文件系統(tǒng)都有默認塊大小 xfs:4KB NTFS:4KB
- HDFS 塊 默認128MB (分塊=》chunk) 一個小文件不會占一整個塊(硬盤會)
分布式文件系統(tǒng)引入塊的好處
- 便于管理大文件
- 簡化了文件系統(tǒng)的設計
- 對容錯性的提升
- 對并行性的提升
NAMENODE
主/從 架構,每個集群一般只要1個(正在工作的)NAMENODE
NameNode管理文件系統(tǒng)的命名空間(namespace) 即管理文件系統(tǒng)元數(shù)據(jù),兩個文件永久保存在本地磁盤:命名空間鏡像文件(fsimage)和編輯日志文件(editlog)
Name記錄每個塊所在DataNode的信息, 而DataNode維護塊所在磁盤位置
-
NAMENODE目錄結構
/dfs/nn/current/VERSION
- namespaceID
- clusterID
- blockpoolID
- cTime
- sotrageType
- layoutVersion
/dfs/nn/in_use.lock
/dfs/nn/current/edit.log
記錄著當前時間內存中的事物,一定閾值后會寫到fsiamge
hdfs oev -i edits_... -o ~/edit.xml -> 將edit文件(二進制)轉換成xml可視文件
/dfs/nn/current/fsimage
包換所目錄和文件inode的序列化信息(元信息),只記錄塊和DD的對應關系
Hfs oiv -i ... -o ... -> fsimage -> webhdfs、xml
永久性還原點
DATENODE
DataNode是文件系統(tǒng)的工作節(jié)點
DataNode根據(jù)客戶端的請求來讀或者寫數(shù)據(jù)
-
DATANODE文件目錄
/dfs/dn/current/BP-...
HDFS塊存儲在blk前綴的文件中,存一部分原始數(shù)據(jù)以及meta文件存儲頭部信息和校驗和信息
當目錄已經存儲了64個數(shù)據(jù)塊,就會新建一個子目錄
JournalNode
共享存儲
nn(active) editlog -> journalNode -> nn(standby)
復制塊的放置
副本因子為3時,第一個數(shù)據(jù)塊放置到本地機架(RACK)的一個節(jié)點(如果客戶端在集群外,就隨機選擇一個節(jié)點),另一份數(shù)據(jù)塊放置到異機架的一個節(jié)點,最后一份數(shù)據(jù)塊放置到與第二塊同一個機架的另一個節(jié)點。
重啟
- 加載fsimage到內存,進入安全模式(只讀)
- 執(zhí)行時間戳后的edit.log生成新的fsimage
- DA向NN報告文件,當文件收集99.9%時,退出安全模式
Balancer
兩個參數(shù)
- 閾值 5 -> 最大% - 最小% < 5% 停止重平衡